#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <stack>
#include <math.h>
#include <iostream>
using namespace std;
struct f
{
char c[110];
int exp;
}A,B;
void change(string a,f &A,int sign)
{
while(a.length()>0&&a[0]=='0')
{
a.erase(a.begin());
}
int exp=0,len=0;
A.c[len++]='0';
A.c[len++]='.';
if(a.length()==0)
{
for(int i=0;i<sign;i++)
{
A.c[len++]='0';
}
A.exp=exp;
A.c[len++]='\0';
return;
}
if(a[0]=='.')
{
a.erase(a.begin());
while(a.length()>0&&a[0]=='0')
{
a.erase(a.begin());
exp--;
}
if(a.length()==0)
{
A.exp=0;
for(int i=0;i<sign;i++)
{
A.c[len++]='0';
}
A.c[len++]='\0';
}
else
{
int step;
for(step=0;step<sign&&step<a.length();step++)
{
A.c[len++]=a[step];
}
while(step<sign)
{
A.c[len++]='0';
step++;
}
A.c[len++]='\0';
A.exp=exp;
}
}
else
{
for(int i=0;i<a.length();i++)
{
if(a[i]!='.')
{
exp++;
}
else
{
a.erase(a.begin()+i);
break;
}
}
int step;
for(step=0;step<a.length()&&step<sign;step++)
{
A.c[len++]=a[step];
}
while(step<sign)
{
A.c[len++]='0';
step++;
}
A.c[len++]='\0';
A.exp=exp;
}
}
int main()
{
string a,b;
int sign;
scanf("%d",&sign);
cin>>a>>b;
change(a,A,sign);
change(b,B,sign);
if(strcmp(A.c,B.c)==0&&A.exp==B.exp)
{
printf("YES");
printf(" %s*10^%d",A.c,A.exp);
}
else
{
printf("NO");
printf(" %s*10^%d",A.c,A.exp);
printf(" %s*10^%d",B.c,B.exp);
}
return 0;
}
PAT甲1060 Are They Equal(25 分)
猜你喜欢
转载自blog.csdn.net/yhy489275918/article/details/82084187
今日推荐
周排行