1.0000000 1.0 1.0000000 1 0.0000 0 100.000 100 这几个数据能通过基本上就OK了/******************* * Author:fisty * Data:2014-12-6 * hdu2054 * ******************/ #include <cstdio> #include <cstring> #include <iostream> using namespace std; #define MAX_N 100000 struct strng{ char s[MAX_N]; int lable; }; int main(){ struct strng a,b; a.lable = 0;b.lable = 0; while(scanf("%s%s", a.s,b.s) !=EOF){ int a_len = strlen(a.s); int b_len = strlen(b.s); if(!strcmp(a.s,b.s)){ printf("YES\n"); }else{ //去掉符号位 if(a.s[0] == '+') a.lable = 0; if(a.s[0] == '-') {a.lable = 1; for(int i = 1;i < a_len; i++){ a.s[i-1] = a.s[i]; } } if(b.s[0] == '+') b.lable = 0; if(b.s[0] == '-') {b.lable = 1; for(int i = 1;i < b_len; i++){ b.s[i-1] = b.s[i]; } } if(a.lable != b.lable){ printf("NO\n"); break; } int a_len = strlen(a.s); int b_len = strlen(b.s); //去掉前导0 int ok = 0; int k = 0; //index for(int i = 0;i < a_len; i++){ if((a.s[i] == '+' || a.s[i] == '-' || a.s[i] == '0' )&& ok == 0){ continue; }else{ ok = 1; a.s[k++] = a.s[i]; } } for(int i = k;i < a_len; i++){ a.s[i] = '\0'; } a_len = k; ok = 0; k = 0; for(int i = 0;i < b_len; i++){ if((b.s[i] == '+' || b.s[i] == '-' || b.s[i] == '0' )&& ok == 0){ continue; }else{ ok = 1; b.s[k++] = b.s[i]; } } for(int i = k;i < b_len;i++){ b.s[i] = '\0'; } b_len = k; //去掉后导0 int ok1 = 0;int ok2 = 0; int p = a_len, q = b_len; for(int i = 0;i < a_len; i++){ if(a.s[i] == '.'){ p = i; ok1 = 1; } } if(ok1 == 1){ int i = a_len-1; while(a.s[i] == '0'){a.s[i--] = '\0';} if(a.s[i] == '.') a.s[i] = '\0'; } //cout<< a.s<<endl; for(int i = 0;i < b_len; i++){ if(b.s[i] == '.'){ q = i; ok2 = 1; } } if(ok2 == 1){ int i = b_len-1; while(b.s[i] == '0'){b.s[i--] = '\0';} if(b.s[i] == '.') b.s[i] = '\0'; } //cout<<b.s<<endl; //输出 if(!strcmp(a.s, b.s)){ printf("YES\n"); }else{ printf("NO\n"); } } } return 0; }
hdu2054A == B ?
最新推荐文章于 2018-05-30 20:27:23 发布