(本題有疑問,有待商榷)
題目描述
谷學長有一個非常簡單的問題給你,給你兩個整數A和B,你的任務是計算A+B。
輸入
輸入的第一行包含一個整數T(T<=20)表示測試實例的個數,然後2*T行,分別表示A和B兩個正整數。注意整數非常大,那意味着你不能用32位整數來處理。你可以確定的是整數的長度不超過1000。
輸出
對於每一個樣例,你應該輸出兩行,第一行是"Case #:",#表示第幾個樣例,第二行是一個等式"A+B=Sum",Sum表示A+B的結果。注意等式中有空格。
樣例輸入
2
1
2
112233445566778899
998877665544332211
樣例輸出
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
代碼
#include "stdio.h"
#include "string.h"
int main()
{
int i,t,j=1,n,len,k;
char sum[1009],sa[1009],sb[1009];
scanf("%d",&t);
getchar();
while(t--)
{
for(i=0;i<1009;i++)
sum[i]='0';
scanf("%s%s",sa,sb);
len=strlen(sa);
for(i=len-1,k=0;i>=0;i--,k++)
{
sum[k]=sum[k]-'0'+sa[i];
n=k;
while(sum[n]>'9')
{
sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
sum[n]=(sum[n]-'0')%10+'0';
n++;
}
}
len=strlen(sb);
for(i=len-1,k=0;i>=0;k++,i--)
{
sum[k]=sum[k]-'0'+sb[i];
n=k;
while(sum[n]>'9')
{
sum[n+1]=sum[n+1]+(sum[n]-'0')/10;
sum[n]=(sum[n]-'0')%10+'0';
n++;
}
}
printf("Case %d:\n%s + %s = ",j,sa,sb);
j++;
for(i=1008;sum[i]=='0';i--);
for(;i>=0;i--)
printf("%c",sum[i]);
//printf("\n");
if(t>0)
printf("\n");
}
return 0;
}