ac代码:
// author: Feynman1999 #include<iostream> #include<cstring> using namespace std; char a1[100010]; char a2[100010]; int fun2(char *a,int len){ int flag=0; for(int i=0;i<len;++i) if(a[i]=='0'||a[i]=='.') flag++; if(flag==len) return 1; else return 0; } int index(char *a,int len)//判断是否为小数 { for(int i=0;i<len;++i) if(a[i]=='.') return 1; return 0; } char fun(char *a,int & len)//符号问题 { if(a[0]=='-'){ for(int i=1;i<len;++i){ a[i-1]=a[i]; } len--; if(fun2(a,len)==1) return'+'; else return '-'; } else if(a[0]=='+'){ for(int i=1;i<len;++i){ a[i-1]=a[i]; } len--; return '+'; } return '+'; } void front_0(char *a,int & len)//处理前导零 { int t=0; int temp; temp=len; while(a[t]=='0'&&a[t+1]!='.'&&len>0) { t++; len--; } int j=0; for(int i=t;i<temp;++i,++j){ a[j]=a[i]; } a[j]='\0'; } void back_0(char *a,int & len)//处理后续零 { int t=len-1; while(a[t]=='0') { t--; len--; } a[t+1]='\0'; } int main() { int index1,index2; index1=index2=0; int len1,len2; char c1,c2; while(cin>>a1>>a2) { len1=strlen(a1); len2=strlen(a2); index1=index(a1,len1); index2=index(a2,len2); c1=fun(a1,len1); c2=fun(a2,len2); if(index1!=index2) { if(fun2(a1,len1)==1&&fun2(a2,len2)==1) cout<<"YES"<<endl; else{ front_0(a1,len1); front_0(a2,len2); back_0(a1,len1); back_0(a2,len2); int len3; len3=len1<len2?len1:len2; if(strncmp(a1,a2,len3)==0&&c1==c2) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } else if(index1==0){ front_0(a1,len1); front_0(a2,len2); if(strcmp(a1,a2)==0&&c1==c2) cout<<"YES"<<endl; else cout<<"NO"<<endl; } else if(index1==1){ front_0(a1,len1); front_0(a2,len2); back_0(a1,len1); back_0(a2,len2); if(strcmp(a1,a2)==0&&c1==c2) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } return 0; }