#include<iostream>
using namespace std;
int a_[300]={0},b_[300]={0};
int *a=a_+150,*b=b_+150;
int N;//精度
void putsto(string s,int *digit)
{
int i,j;
for(i=0;i<s.size();i++){
if(s[i]=='.')break;
}
if(i==s.size()){//没显示出小数点
for(j=0;j<s.size();j++){
digit[s.size()-1-j]=s[j]-'0';
}
}
else{//显示出现小数点
for(j=0;j<i;j++){
digit[i-1-j]=s[j]-'0';
}
for(j=i+1;j<s.size();j++){//整数部分
digit[i-j]=s[j]-'0';
}
}
}
bool checksame()
{
int i,j;
for(i=120;i>-120;i--){
if(a[i]||b[i]){
if(a[i]&&b[i])break;
else return false;
}
}
if(i==-120)return true;
for(j=0;j<N;j++){
if(a[i-j]!=b[i-j])break;
}
if(j==N){
return true;
}
else{
return false;
}
}
void print(int*digit)
{
int i,j;
for(i=120;i>-120;i--){
if(digit[i]!=0)break;
}
if(i==-120){//全零
cout<<' '<<"0.";
for(j=0;j<N;j++)cout<<0;
cout<<"*10^0";
}
else{//找到i为第一个非零数
cout<<' '<<"0.";
for(j=0;j<N;j++){
cout<<digit[i-j];
}
cout<<"*10^"<<i+1;
}
}
int main()
{
string s1,s2;
cin>>N>>s1>>s2;
putsto(s1,a);
putsto(s2,b);
bool signal=checksame();
if(signal==true)cout<<"YES";
else cout<<"NO";
print(a);
if(signal==false)print(b);
}
//31415.926
//012345678
//43210 -1,-2,-3
//31415
//01234
//43210
//0031415.00000
//0031416.00000
1060 Are They Equal
最新推荐文章于 2024-10-31 04:41:10 发布