HDU 2054 A==B?

来源:互联网 发布:访问远程oracle数据库 编辑:程序博客网 时间:2024/06/06 02:17

题意:判断两个数字是否相等

解题思路:数字可能很大,所以要用字符串存储,这里需要注意的就是小数点,举个例子:1.300和1.3,要将1.300后面的0去掉,变成1.3,然后进行比较,如果是1.000和1,还要去掉1.000的小数点。这里用到了find函数,如果找不到就会返回string::npos,还用到了一个substr函数,这个函数的作用是复制指定的字符串,例如s1=s.substr(0,len)就是将字符串s从0到len位置的字符复制s1中

代码:

#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <cmath>using namespace std;string solve(string s){    int len=s.length();    if(s.find('.')!=string::npos)    {        for(int i=len-1; s[i]=='0'; i--)len--;        s=s.substr(0,len);    }    if(s[len-1]=='.')s=s.substr(0,len-1);    return s;}int main(){    string s1,s2;    while(cin>>s1>>s2)    {        s1=solve(s1);        s2=solve(s2);        if(s1==s2)cout<<"YES"<<endl;        else cout<<"NO"<<endl;    }    return 0;}