HD 2054 a==b? (数据比较坑,附上一些数据~)

    xiaoxiao2021-03-25  112

                                                A == B ?

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 102128    Accepted Submission(s): 16260 Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".   Input each test case contains two numbers A and B.   Output for each case, if A is equal to B, you should print "YES", or print "NO". Sample Input 1 2 2 2 3 3 4 3   Sample Output NO YES YES NO   Author 8600 && xhd   Source 校庆杯Warm Up   一些数据: 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 YES 00000000000000000002222 2222 YES   200 200000 NO 0.00002 0.000020000000000000000000000000000000 YES 00000000000000000000.00002 0.0000200000 YES 0022000 0000000000022000 YES -0022.00200 -000000000000022.002000000000000000000 YES +0.00 0.000000000000000 YES 000000000 0000000000000 YES 000001.00000 1 YES -0001.000 0001 NO -0 0 YES

    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; }

       

    转载请注明原文地址: https://ju.6miu.com/read-24689.html

    最新回复(0)