题解:P1601 A+B Problem(高精)

· · 题解

所谓高精度加法,便是将数字运算转换为字符串运算的体现。

思路解读

首先,预处理一下两个字符串,将长度更短的那个数字补上 0 使得其长度与较长的数字相同。

接着,从高到低进行加法运算,就像我们小学学习的竖式加法一样。将每一位的运算结果储存到答案串中,从高到低输出。

代码实现

马蜂可能有点丑,请见谅。

#include <bits/stdc++.h>
using namespace std;
string add(string s1,string s2){
    string s;//答案串。
    int len1=s1.length();
    int len2=s2.length();
    if(len1<len2){//预处理补位。
        for(int i=1;i<=len2-len1;i++){
            s1="0"+s1;
        }
    }else{
        for(int i=1;i<=len1-len2;i++){
            s2="0"+s2;
        }
    }
    len1=s1.length();
    int cf=0,temp;
    for(int i=len1-1;i>=0;i--){//处理答案。
        temp=s1[i]-'0'+s2[i]-'0'+cf;
        cf=temp/10;
        temp%=10;
        str=char(temp+'0')+s;
    }
    if(cf!=0){
        str=char(cf+'0')+s;
    }
    return s;
}
string s1,s2;
int main(){
    cin>>s1>>s2;
    cout<<add(s1,s2);
    return 0;
}

完结撒花?

题外话

其实 Python 是自带高精度的,所以我们也能用 Python 写出非常简短的代码。

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

update:2025.10.9 免责声明:本人代码中掺杂了防作弊部分,并非出错。