PTA乙级题 1074. 宇宙无敌加法器(20)
【题目链接】
注意第71行和72行,如果不要这两行的话,第五个测试点错误。所以题目的意思应该是如果前面没有输出的话,就输出0。
#include<stdio.h>
#include<string.h>
int main()
{
int i,len1,len2,jinwei=0,flag=0;
char a[21],b[21],c[2][21];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
gets(a);
gets(c[0]);
gets(c[1]);
len1=strlen(c[0]);
len2=strlen(c[1]);
if (len1>len2)
{
for (i=0;i<len2;i++)
b[19-i]=c[0][len1-i-1]+c[1][len2-i-1]-'0';
for (;i<len1;i++)
b[19-i]=c[0][len1-i-1];
}
else
{
for (i=0;i<len1;i++)
b[19-i]=c[0][len1-i-1]+c[1][len2-i-1]-'0';
for (;i<len2;i++)
b[19-i]=c[1][len2-i-1];
}
for (i=0;i<strlen(a);i++)
{
if (b[19-i]==0)
break;
b[19-i]+=jinwei;
if (a[strlen(a)-1-i]=='0')
a[strlen(a)-1-i]+=10;
jinwei=(b[19-i]-'0')/(a[strlen(a)-1-i]-'0');
b[19-i]=(b[19-i]-'0')%(a[strlen(a)-1-i]-'0')+'0';
}
if (jinwei>0)
{
printf("%d",jinwei);
for (i=0;i<20;i++)
{
if (b[i]!=0)
{
for (;i<20;i++)
{
printf("%c",b[i]);
flag=1;
}
}
}
return 0;
}
for (i=0;i<20;i++)
{
if (b[i]!=0&&b[i]!='0')
{
for (;i<20;i++)
{
printf("%c",b[i]);
flag=1;
}
break;
}
}
if (flag==0)
printf("0");
}