1. 程式人生 > >陣列模擬加法(每日一練 11.30)

陣列模擬加法(每日一練 11.30)

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; }