hdu2054 通过率低是有理由的

这虽然是一道水题,但却巨坑,他题面上不说数据范围,也没有说数据类型,事实就是数据范围巨大,整型实型都有,所以必须用字符串去写,但是又涉及到小数,所以还要删除小数后面多余的0,比如1==1.0000,这是yes,0==0.0这也是yes,所以只需要删除后导0以及后导0删完了如果还有小数点,那小数点也要删除,比如1.0000应该变成1.

这里用的是string而不是字符型数组,因为进行删除操作比较简便。

上代码了:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 string a,b;
 5 void delete0()
 6 {
 7     if(a.find(".")!=-1)//没有小数点不必删除0 
 8     {
 9         for(int i=a.length()-1;i>=0;i--)//从尾部开始
10         {
11             if(a[i]=='0')
12             a.erase(a.end()-1);
13             else if(a[i]=='.')//0删完了下一个如果是小数点 
14             {
15                 a.erase(a.end()-1);
16                 break;
17             }
18             else//如果后面的0删完了直接结束 
19             break;
20         }
21     }
22     if(b.find(".")!=-1)
23     {
24         for(int i=b.length()-1;i>=0;i--)
25         {
26             if(b[i]=='0')
27             b.erase(b.end()-1);
28             else if(b[i]=='.')
29             {
30                 b.erase(b.end()-1);
31                 break;
32             }
33             else
34             break;
35         }
36     }
37 }
38 int main()
39 {
40     while(cin>>a>>b)
41     {
42         delete0();
43         if(a==b)
44         puts("YES");
45         else
46         puts("NO");
47     }
48     return 0;
49 }
原文地址:https://www.cnblogs.com/spongeb0b/p/9382349.html