题目大意:
给出两个数AB,问A,B是否相等
题解:
与一般的判断大小的区别是要考虑小数点的情况(因为这可能是大数,所以要当做字符串来读)
可能的情况
①1.99999999999999999999999999999999999999999999
2(这组数据解释了为什么要有字符串来输入)
②1.300
1.3(这组数据解释了为什么要在把字符串的结尾符'\0'改为'0')
③1.0000
1(这组数据解释了为什么要在把'.'改为'0')
考虑给出的这三种情况就对了。
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
char x[100020],y[100020];
void doit(char s[])
{
int l=strlen(s),p(0);
for(int i=0;i<l;i++)
if(s[i]=='.')
{
p=1;
break;
}
if(p)
{
for(int i=l-1;i>=0;i--)
if(s[i]!='0')break;else s[i]='\0';
l=strlen(s);
if(s[l-1]=='.')s[l-1]='\0';
}
}
int main()
{
while(cin>>x>>y)
{
doit(x);doit(y);
if(strcmp(x,y)==0)cout<<"YES\n";else cout<<"NO\n";
}
}