A==?B(A,B超级大)

#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;
struct zhennan
{
char str[100000];
char str0[100000];
void cc()
{
int n,i,k1,k2,f,v;
n=strlen(str);
f=0;
for(i=0,k1=0;i<n;i++)
{
if(str[i]=='0'&&f==0) {continue;}
if(str[i]!='0') {f++;}
str0[k1]=str[i];
k1++;
}

str0[k1]='';
v=0;
for(i=0;i<k1;i++)
{
if(str0[i]!='.') {v=1;}
else {v=0;break;}
}
if(v==0)
{
f=0;
for(i=k1-1,k2=0;i>=0;i--)
{
if(str0[i]=='0'&&f==0) {continue;}
if(str0[i]!='0') {f++;}
str[k2]=str0[i];
k2++;
}
str[k2]='';
if(str[0]=='.')
{
for(i=0;i<k2-1;i++)
str[i]=str[i+1];
}
str[k2-1]='';
}
if(v==1)
{
for(i=k1-1,k2=0;i>=0;i--,k2++)
str[k2]=str0[i];
str[k2]='';
}
}
};
zhennan a,b;
int main()
{
long long i,j,m;
while(cin>>a.str>>b.str)
{
if(a.str[0]=='-')
{
m=strlen(a.str);
for(i=0,j=1;j<m;i++,j++)
a.str[i]=a.str[j];
a.str[j-1]='';
a.cc();
if(strlen(a.str)==0) {a.str[0]='0';a.str[1]='';}
else {
m=strlen(a.str);
a.str[m]='-';
a.str[m+1]='';
}
}
else a.cc();
if(a.str[0]=='') {a.str[0]='0';a.str[1]='';}
if(b.str[0]=='-')
{
m=strlen(b.str);
for(i=0,j=1;j<m;i++,j++)
b.str[i]=b.str[j];
b.str[j-1]='';
b.cc();
if(strlen(b.str)==0) {b.str[0]='0';b.str[1]='';}
else
{
m=strlen(b.str);
b.str[m]='-';
b.str[m+1]='';
}
}
else b.cc();
if(b.str[0]=='') {b.str[0]='0';b.str[1]='';}
if(strcmp(a.str,b.str)==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}

原文地址:https://www.cnblogs.com/NYNU-ACM/p/4658281.html