Problem Description
Give you two numbers A and B, if A is equal to B, you should print “YES”, or print “NO”.
Input
each test case contains two numbers A and B.
Output
for each case, if A is equal to B, you should print “YES”, or print “NO”.
Sample Input
1 2
2 2
3 3
4 3
Sample Output
NO
YES
YES
NO
简单的大数,此题有如下几个要点:
1、数前有零;
这一步就用for(int i=0;a[i]==’0’&&i
a[i]=’a’;
将需要删除的数赋值为 a。
2,、小数点后有零;
首先判断是否小数点,若有小数点则对最后一位去零处理,
for(int i=strlen(a);(a[i]==’.’||a[i]==’0’)&&i>0;i++)
a[i]=’a’;
3、将不为a的数值赋给另一个字符串c[j++];d[j++];
4、strcmp比较c和d
#include<stdio.h>
#include<string.h>
int main()
{
char a[100005],b[100005];
while(scanf("%s%s",a,b)!=EOF)
{
char c[100005]={0},d[100005]={0};
int mark_a=0,mark_b=0;
for(int i=0;i<strlen(a)-1&&a[i]=='0';i++)
a[i]='a';
for(int i=0;i<strlen(b)-1&&b[i]=='0';i++)
b[i]='a';
for(int i=0;i<strlen(a)||i<strlen(b);i++)
{
if(a[i]=='.')
mark_a=i;
if(b[i]=='.')
mark_b=i;
}
for(int i=strlen(a)-1;mark_a&&(a[i]=='0'||a[i]=='.')&&i>=mark_a;i--)
a[i]='a';
for(int i=strlen(b)-1;mark_b&&(b[i]=='0'||b[i]=='.')&&i>=mark_b;i--)
b[i]='a';
for(int i=0,j=0;i<strlen(a);i++)
if(a[i]!='a')
c[j++]=a[i];
for(int i=0,j=0;i<strlen(b);i++)
if(b[i]!='a')
d[j++]=b[i];
if(strcmp(c,d)==0)
printf("YES\n");
else printf("NO\n");
}
}