hdu 2054
2017-01-09 21:08
369 查看
A == B ?
[align=left]Problem Description[/align]Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".[align=left]Input[/align]each test case contains two numbers A and B.
[align=left]Output[/align]for each case, if A is equal to B, you should print "YES", or print "NO".
[align=left]Sample Input[/align]1 22 23 34 3 [align=left]Sample Output[/align]NOYESYESNO
/* 分析 : 输入两个数A 、B 判断两个数是否相等。 未给数据范围 所以我们应该考虑用字符串存储来处理它们 因为题目可能会出前导零 后导零的情况 而且最前面可能会有‘+’ ‘-’ 例如 001 与 0001 这两个是相等的 001.00000 与 1 也是相等的 +001.000 与 1 相等 +1 与 -1 不相等 所以我先找出小数点的位置 temp=a.find('.');0~temp 与 temp~a.length(); 分别扫一遍,进行处理字符串。 然后进行比较即可。 */ #include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> #include <string> #include <cstdlib> using namespace std; string a,b; void work(string a,string b,int len1,int len2) { int temp1=a.find('.'),temp2=b.find('.'); int i,j,k; int front_zero_1=0,back_zero_1=0; if(temp1!=-1)//有逗号 { for(i=0;i<temp1-1;i++) { if(a[i]=='+'||a[i]=='-') continue; if(a[i]!='0') break; if(a[i]=='0') { front_zero_1=1; } } if(front_zero_1==1) { if(a[0]=='+'||a[0]=='-') a.erase(a.begin()+1,a.begin()+i); else a.erase(a.begin(),a.begin()+i); } temp1=a.find('.'); len1=a.length(); for(i=len1-1;i>temp1;i--) { if(a[i]!='0') break; if(a[i]=='0') { back_zero_1=1; continue; } } if(back_zero_1) a.erase(a.end()-len1+i+1,a.end()); } else { for(i=0;i<len1;i++) { if(a[i]=='+'||a[i]=='-') continue; if(a[i]!='0') break; if(a[i]=='0') { front_zero_1=1; continue; } } if(front_zero_1) { if(a[0]=='+'||a[0]=='-') a.erase(a.begin()+1,a.begin()+i); else a.erase(a.begin(),a.begin()+i); } } int front_zero_2=0,back_zero_2=0; if(temp2!=-1)//有逗号 { for(i=0;i<temp2-1;i++) { if(b[i]=='+'||b[i]=='-') continue; if(b[i]!='0') break; if(b[i]=='0') { front_zero_2=1; continue; } } if(front_zero_2) { if(b[0]=='+'||b[0]=='-') b.erase(b.begin()+1,b.begin()+i); else b.erase(b.begin(),b.begin()+i); } temp2=b.find('.'); len2=b.length(); for(i=len2-1;i>temp2;i--) { if(b[i]!='0') break; if(b[i]=='0') { back_zero_2=1; continue; } } if(back_zero_2) b.erase(b.end()-len2+i+1,b.end()); } else { for(i=0;i<len2;i++) { if(b[i]=='+'||b[i]=='-') continue; if(b[i]!='0') break; if(b[i]=='0') { front_zero_2=1; continue; } } if(front_zero_2) { if(b[0]=='+'||b[0]=='-') b.erase(b.begin()+1,b.begin()+i); else b.erase(b.begin(),b.begin()+i); } } if(a.find('.')+1==a.length()) a.erase(a.find('.')); if(b.find('.')+1==b.length()) b.erase(b.find('.')); if(a[0]=='+') a.erase(a.begin()); if(b[0]=='+') b.erase(b.begin()); //cout<<front_zero_1<<" "<<front_zero_2<<endl; //cout<<back_zero_1<<" "<<back_zero_2<<endl; //cout<<a<<endl; //cout<<b<<endl; if(a==b) puts("YES"); else puts("NO"); } int main() { while(cin>>a>>b) work(a,b,a.length(),b.length()); return 0; }
相关文章推荐
- HDU 2054 JAVA
- HDU 2054 A == B ?
- HDU 2054 A == B ?(找小数点)
- HDU 2054 A == B ?
- hdu-2054-A==B?
- hdu 2054 A==B?
- HDU 2054 - A == B ?
- hdu_2054 (A==B?)
- hdu 2054 A==B?
- HDU 2054 A==B?
- HDU-2054
- hdu 2054
- HDU-2054
- hdu 2054 A == B ? (java)
- NYOJ 524 & HDU 2054 A==B?(模拟)
- HDU--2054 -- A == B ? [字符串]
- hdu-2054 A == B ?
- HDU 2054 A == B?
- hdu - 2054 - A == B ?
- hdu 2054 A == B ?