看完题目后觉得题太简单了,给的测试案例也都是整数,许多情况根本考虑不到。主要是考虑小数中末尾的0,如9.0和9.00是相等的数,所以输入的数据类型最好定义成字符串,然后在比较两个数前先把末尾的0去掉。另外,在定义字符串是如果你用一个a[100]来输入交上去后也会报错,当你开到a[50000]时它才会让你AC!!
1 2 2 2 3 3 4 3
NO YES YES NO
代码:
#include<iostream>
#include<cstring>
using namespace std;
void qq(char *a)
{
int len,i;
len=strlen(a)-1;
for(i=len;i>=0;i--)
{
if(a[i]=='0')
len--; //去掉小数点后的0
else
break;
}
if(a[len]=='.') //如果小数点后全是0,那小数点也得去掉
len--;
a[len+1]='\0'; //通过加结束标志来去掉
}
int main()
{
int i,len;
char a[50000],b[50000];
while(cin>>a>>b)
{
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]=='.') //对有小数点的数据处理
qq(a);
}
len=strlen(b);
for(i=0;i<len;i++)
{
if(b[i]=='.')
qq(b);
}
if(strcmp(a,b))
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}