hdu 2054 A==B?
# include<iostream>
using namespace std;
void deal(string &s)
{
int k=0;
if(~s.find('.'))//存在小数点,两头删除0
{
while(s[k]=='0') k++;
s.erase(0,k);
k=s.size()-1;
while(s[k]=='0') k--;
s.erase(k+1);
}
else//是整数,从开头删除0
{
while(s[k]=='0') k++;
s.erase(0,k);
}
if(s[s.size()-1]=='.') s.erase(s.size()-1);
}
int main()
{
string a,b;
while(cin>>a>>b)
{
//cout<<(a.find('.')==-1)<<endl;
deal(a);
deal(b);
// cout<<a<<endl;
// cout<<b<<endl;
cout<<((a==b)?"YES":"NO")<<endl;
}
return 0;
}
最朴素的分类讨论(要是直接想出分类合并后的处理那就更好了),小数和小数比较 整数和整数比较 小树和整数比较(这里的小数是指带有小数点)
其实是一边写一遍调试改出来的,处理思路是如果是有小数点从两头开始删除0,如果没有小数点,就从最高位开始删除0.
最后还需注意若是字符串最后一个元素为'.',说明这个数是整数,应该去掉小数点,若是0处理完后字符串为空。
具体出力时调用了 C++的库函数,向用C(未用库函数)和pascal实现的手打党致敬!
自己设计的样例。
0000.0001234500000
0000.000000000
0001.100000000
0000.3200000
0.0
5000000.0
0.50000
.12323345
0
500000000
00005000000
浙公网安备 33010602011771号