cjweffort

博客园 首页 联系 订阅 管理

http://ac.jobdu.com/problem.php?cid=1040&pid=59

题目描述:

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

输入:

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

输出:

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

样例输入:
2 6
10000000000000000000 10000000000000000000000000000000
样例输出:
8
10000000000010000000000000000000

// 题目60:a+b.cpp: 主项目文件。

#include "stdafx.h"
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<functional>
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
using namespace std;

char a[1003],b[1003];

void Sum(char *a,char *b)
{
    char c[1001],d[1001];
    memset(c,'0',sizeof(c));
    memset(d,'0',sizeof(d));
    int l1=strlen(a),l2=strlen(b),t,i;
    t=l1>l2?l1:l2;
    for(i=0;i<l1;i++)
        c[i]=a[l1-1-i];
    for(i=0;i<l2;i++)
        d[i]=b[l2-1-i];
    for(i=0;i<t;i++)
    {
        c[i]+=d[i]-'0';
        if(c[i]>9)
            c[i+1]+=(c[i]-'0')/10;
        c[i]=(c[i]-'0')%10+'0';
    }
    if(c[t]!='0')
        t++;
    for(i=t-1;i>=0;i--)
        printf("%c",c[i]);
    printf("\n");
}

int main()
{
    ///////////////////////////////////
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    ///////////////////////////////////
    int n;
    while(scanf("%s%s",a,b)!=EOF)
    {
        Sum(a,b);
    }
    return 0;
}


posted on 2013-03-06 11:40  cjweffort  阅读(170)  评论(0编辑  收藏  举报