大数加法

来源:互联网 发布:淘宝百阅街怎么下载 编辑:程序博客网 时间:2024/05/22 14:27

先来个java版

import java.math.*;import java.util.*;public class Main{    static public void main(String[] args)    {        Scanner cin = new Scanner(System.in);                    BigInteger a = cin.nextBigInteger();        BigInteger b = cin.nextBigInteger();                System.out.println(a.add(b));                cin.close();    }}

再来个c++版

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 505;char A[maxn], B[maxn], sum[maxn];void add(char *a, char *b){    int a_len = strlen(a);    int b_len = strlen(b);    if(a_len > b_len)        swap(a, b), swap(a_len, b_len);    reverse(a, a + a_len);    reverse(b, b + b_len);    int len = b_len;    for(int i = a_len; i < len; i++)        a[i] = '0';    int c = 0;    for(int i = 0; i < len; i++)    {        int t = (a[i] - '0') + (b[i] - '0') + c;        c = (t >= 10);        sum[i] = t - 10 * c + '0';    }    if(c) sum[len++] = '1';    sum[len] = '\0';    reverse(sum, sum + len);}int main(){    while(~scanf("%s%s", A, B))    {        add(A, B);        printf("%s\n", sum);    }    return 0;}


0 0