专栏文章

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

P1601题解参与者 7已保存评论 7

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
7 条
当前快照
1 份
快照标识符
@miotgsb0
此快照首次捕获于
2025/12/03 00:52
3 个月前
此快照最后确认于
2025/12/03 00:52
3 个月前
查看原文
所谓高精度加法,便是将数字运算转换为字符串运算的体现。

思路解读

首先,预处理一下两个字符串,将长度更短的那个数字补上 00 使得其长度与较长的数字相同。
接着,从高到低进行加法运算,就像我们小学学习的竖式加法一样。将每一位的运算结果储存到答案串中,从高到低输出。

代码实现

马蜂可能有点丑,请见谅。
CPP
#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 写出非常简短的代码。
PYTHON
a=input()
b=input()
a=int(a)
b=int(b)
print(a+b)
update:2025.10.9 免责声明:本人代码中掺杂了防作弊部分,并非出错。

评论

7 条评论,欢迎与作者交流。

正在加载评论...