A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 109259 Accepted Submission(s): 17479
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
Recommend
哇 真的是水题 这里 先给出一个 AC 的 答案
主要处理一下 小数的情况 比如 1.000 和 1 是相等的 。
Code:
#include <iostream>
#include <string>
using namespace std;
string re(string a) {
int len=a.length();
int count=a.find('.');
if (count!=string::npos)
{
for (int i=0;;i++) {
if (a[len-1]=='0')
{
a.erase(len-1,1);
len--;
}
else if (a[len-1]=='.') {
a.erase(len-1,1);
len--;
break;
}
else break;
}
}
return a;
}
int main () {
string a,b;
while (cin>>a>>b) {
if (re(a)==re(b)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
这里 只考虑了尾部为0 比如 1.0000000000000 其实就是1
结果就AC 了 还真是水题 ~~~
一般这种题目需要注意几点
1)前导0去掉 (这个题目没有考虑) ×
2)小数点后面的后续0去掉 √
3)-0=0(这个也是需要特别注意的点)×
4)可以去掉的话,最好去掉小数点 √
下面贴出四钟情况全考虑的情况
/* A==B?
一般这种题目需要注意几点
1)前导0去掉 (这个题目没有考虑)×
2)小数点后面的后续0去掉 √
3)-0=0(这个也是需要特别注意的点)×
4)可以去掉的话,最好去掉小数点 √
*/
// HDU 2054 AC代码 :
#include <iostream>
#include <string>
using namespace std;
string re(string a) {
string b="+"; // 默认为正号 用来判断正负 ;
if (a=="-0") {
a="0";
} // -0 和 0 的情况
if (a!="-0") {
if (a[0]=='-') {
b="-";
a.erase(0,1); // 直接在a中删除‘-’ 然后 令b= '-' 最后把b+a 即可
}
}
int len=a.length();
int count=a.find('.');
if (count!=string::npos) // 如果找到 '.'
{
while (a[len-1]=='0')
{
a.erase(len-1,1); // 尾部的零全部删除。如0.00000000000 就是0
len--;
}
if (a[len-1]=='.') {
a.erase(len-1,1); // 小数点也删除 如 1. = 1 ;
len--;
}
}
while(len>1 && a[0]=='0') { // 删除 前导0 形如 00001, 其实就是1;
a.erase(0,1);
len--;
}
return b+a; // b代表 正负 ;
}
int main () {
string a,b;
while (cin>>a>>b) {
if (re(a)==re(b)) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}