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 通过率低是有理由的的主要内容,如果未能解决你的问题,请参考以下文章