A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 63987 Accepted Submission(s): 10007
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
这其实是道很水的题,但是我WA好多次,因为 想!太!多!
其实这道题只需要注意两点
1.数字很长,必须用字符串保存
2.去掉小数点后面无用的0
如果用字符串保存输入,且能使 10.00和10的输出结果为YES 你就可以A了
该题的测试数据并没有+0与-0 001 与1这样的变态数据,不然考虑的越多,代码就超长了,我也是看了大神的代码才发现~~~
#include <iostream>
#include <string>
using namespace std;
string change(string s)
{
int i,flag(0);
for(i = 0; i < s.size(); i++)
{
if(s[i]=='.')
{
flag = 1;
break;
}
}
if(flag)
{
for(i = s.size()-1; s[i] == '0'; i--)
{
s = s.substr(0,s.size()-1);
}
}
if(s[s.size()-1] == '.')
{
s = s.substr(0,s.size()-1);
}
return s;
}
int main()
{
string a,b;
while(cin >> a >> b)
{
a = change(a);
b = change(b);
if(a == b)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}