hdu2054 通过率低是有理由的

Posted spongeb0b

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于hdu2054 通过率低是有理由的的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2054 A == B ?

HDU 2054 又见GCD(水题??)

HDU 2054 A == B ?(找小数点)

HDU 2054: A == B ?

(stripTrailingZeros)A == B hdu2054

A == B ?(hdu2054)