九度OJ 1198

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char a[1012]={0};
char b[1012]={0};
char c[1012]={0};
int main(int argc, char *argv[])
{
    // freopen("in.txt","r",stdin);
    while(scanf("%s%s",a,b)!=EOF)
    {
        int len1=strlen(a),len2=strlen(b);
        int len=len1>len2?len1:len2;
        int carry=0;
        int i=len1-1,j=len2-1,k=len-1;
        for(;i>=0 && j>=0;i--,j--,k--)
        {
            int tmp=a[i]-'0'+b[j]-'0'+carry;
            carry=tmp/10;
            tmp%=10;
            c[k]=tmp;
        }
        while(j>=0)
        {
            int tmp=b[j--]-'0'+carry;
            carry=tmp/10;
            tmp=tmp%10;
            c[k--]=tmp;
        }
        while(i>=0)
        {
            int tmp=a[i--]-'0'+carry;
            carry=tmp/10;
            tmp=tmp%10;
            c[k--]=tmp;
        }
        if(carry!=0)
            printf("1");
        for(i=0;i<len;++i)
            printf("%d",c[i]);
        printf("\n");
    }
    return 0;
}
 
/**************************************************************
    Problem: 1198
    User: kirchhoff
    Language: C
    Result: Accepted
    Time:120 ms
    Memory:916 kb
****************************************************************/


题目描述:

实现一个加法器,使其能够输出a+b的值。

输入:

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出:

可能有多组测试数据,对于每组数据,
输出a+b的值。

样例输入:
2 6
10000000000000000000 10000000000000000000000000000000
样例输出:
8
10000000000010000000000000000000
来源:
2010年华中科技大学计算机研究生机试真题

你可能感兴趣的:(九度OJ,1198)