就是比较两个大数是否相等 ,要注意前导0,后置0,正负号,小数点。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<vector> #include<cstdlib> using namespace std; int main() { char a[100000],b[100000]; int flag1,flag2,tmp,tmp1,tmp3,tmp4,mm; bool tmp2; bool s1,s2,s3,s4; while(~scanf("%s%s",a,b)) { tmp2=false; s1=s2=s3=s4=false; mm=0; tmp=strlen(a); tmp1=strlen(b); for(int i=0;i<tmp;i++) { if(a[0]=='-') s1=true; if(!mm&&a[i]!='0'&&a[i]!='-'&&a[i]!='+') { flag1 = i; mm=1; } if(a[i] == '.') s3=true; if(i == tmp-1&&!mm) flag1=i; } mm=0; for(int i=0;i<tmp1;i++) { if(b[0]== '-') s2=true; if(!mm&&b[i]!='0'&&b[i]!='-'&&b[i]!='+') { flag2 = i; mm=1; } if(b[i] == '.') s4=true; if(i == tmp1-1&&!mm) flag2=i; } if(s3) { for(int i=tmp-1;i>=0;i--) { if(a[i] != '0'&&a[i]!='.') {tmp3=i;break;} } } if(s4) { for(int i=tmp1-1;i>=0;i--) { if(b[i] != '0'&&b[i]!='.') {tmp4=i;break;} } } if((s1&&s2)||(!s1&&!s2)) { if(s3) tmp=tmp3+1; if(s4) tmp1=tmp4+1; while(flag1<tmp) { if(a[flag1] != b[flag2]) break; if(a[flag1] == b[flag2]) { flag1++,flag2++; } if(flag1 >= tmp&&flag2>=tmp1) {tmp2=true;break;} } } else if((!s1&&s2)||(!s2&&s1)) { if(a[flag1]=='0'&&b[flag2] == '0') tmp2 =true; } if(tmp2) printf("Yes\n"); else printf("No\n"); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。