三种语言实现高精度加法(C++/Python/Java)

题目

给定两个正整数(不含前导 00),计算它们的和。

1≤整数长度≤100000

C++

#include <bits/stdc++.h>

using namespace std;

vector<int> add(vector<int> & A, vector<int> & B)
{
    if(A.size() < B.size()) return add(B, A);
    vector<int> C;
    int t = 0;
    for(int i = 0; i < A.size(); i++)
    {
        t += A[i];
        if(i < B.size())    t += B[i];
        C.push_back(t % 10);
        t /= 10;
    }
    if(t) C.push_back(t);
    return C;
}

int main()
{
    string a,b;
    cin >> a >> b;
    vector<int> A, B;
    for(int i = a.length()-1; i >= 0; i--) A.push_back(a[i]-'0');
    for(int i = b.length()-1; i >= 0; i--) B.push_back(b[i]-'0');
    auto C = add(A, B);
    for(int i = C.size()-1; i >= 0; i--)
        cout << C[i] ;
}

Python

a = int(input())
b = int(input())
print(a+b)

Java

import java.math.BigInteger;
import java.io.*;

public class Main{
    public static void main(String []args) throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BigInteger a = new BigInteger(reader.readLine());
        BigInteger b = new BigInteger(reader.readLine());
        System.out.println(a.add(b));
        reader.close();
    }
}
posted @ 2024-07-28 21:33  火车驶向云外0218  阅读(96)  评论(2)    收藏  举报