陣列模擬加法(每日一練 11.30)
阿新 • • 發佈:2018-12-02
A + B problem
Description
Calculate A + B.
Input
Each line will contain two integers A and B. Process to end of file. (EOF)
Output
For each case, output A + B in one line.
Sample Input 1
2 3
4 5
Sample Output 1
5
9
思路:
調皮的毛學姐又整出一道很坑的題,開始我以為就是簡單的a+b,在 WA 3次後我意識到這題的資料有很大的bug,大到long long都呈不下,所以這種情況只能用陣列模擬求和的方法來做。程式碼如下:
#include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000];
int c[1000],d[1000],i;
while(scanf("%s%s",&a,&b)!=EOF)
{
memset(c,0,sizeof(c));//將陣列初始化為0
memset(d,0,sizeof(d));
for(i=0;i<strlen(a);i++)
c[i]=a[strlen(a)-1-i]-'0';//將資料倒序輸入一個新的陣列
for(i=0;i<strlen(b);i++)
d[i]=b[strlen(b)-1-i]-'0';
for(i=0;i<(strlen(a)>strlen(b)?strlen(a):strlen(b));i++)//模擬求和
c[i+1]+=(c[i]+d[i])/10,c[i]=(c[i]+d[i])%10;
if(c[i])for(int j=i;j>=0;j--)//排除資料開頭為0的情況,即有沒有進位
printf("%d",c[j]);
else for(int j=i-1;j>=0;j--)
printf("%d",c[j]);
printf("\n");
}
return 0;
}