分析:水题,主要是要注意几个细节。
#include<iostream> using namespace std; char a[100005],A[100005]; char b[100005],B[100005]; void Process(char* p,int count,char* p2) { int pos; bool is_real; int i=0,k=0,j; label: while(*(p+i)!='\0' && *(p+i)=='0') i++; if(*(p+i)=='\0') { p2[0]='0',p2[1]='\0'; return ; //为0 } if(*(p+i)=='-') { p2[k++]='-'; i++; goto label; } if(*(p+i)=='+') { i++; //处理正数 goto label; } while(*(p+i)!='\0' && *(p+i)!='.') p2[k++]=p[i],i++; if(*(p+i)=='\0') { p2[k]='\0'; return ; } is_real=false; for(j=count-1;j>i;j--) if(is_real || p[j]!='0') { if(!is_real) pos=j; p2[k+j-i]=p[j]; is_real=true; } if(!is_real) p2[k]='\0'; else p2[k]='.',p2[k+pos-i+1]='\0'; } bool IsEqual() { Process(a,strlen(a),A); Process(b,strlen(b),B); if(!strcmp(A,B)) return true; else return false; } int main() { while(scanf("%s %s",a,b)==2) { if(IsEqual()) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
时间: 2024-10-12 23:16:49