代码
#include <iostream>
using namespace std;
string trim(string str){
if(str.find('.')!=-1){
for(int i=str.length()-1; i>=0; i--){
if(str.at(i)!='0'){
str = str.substr(0, i+1);
break;
}
}
}
if(str.at(str.length()-1)=='.'){
str = str.substr(0, str.length()-1);
}
return str;
}
int main() {
string A, B;
while(cin>>A>>B){
A = trim(A);
B = trim(B);
if(A.compare(B)){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
}
}
return 0;
}
注解
1、本题主要考查字符串,切记不要直接用double类型直接判断相等,会产生Wrong Answer。
2、主要考查小数点后有很多个0的情况。因此要用字符串输入,首先找是否有小数点,如果有,从后往前找0,把后面多余的0去掉。如果是XX.这种情况,还要把最后的小数点去掉。然后才能对两数字做对比。
3、str.find()方法,如果找不到,返回-1,也可用一个常量string::npos表示。如:if(str.find(’.’)==string::npos),就代表找不到小数点的情况。