大整数加法(高精度加法)
什么是大整数?所谓大整数就是特别大的是(超出long long的范围),这个时候我们常用的a+b就不能用了;
但是我们可以将整数转化为字符串来处理,利用加法的原理,一位一位的来加,因为字符串没有长度的限制;
题目链接:https://www.luogu.org/problem/P1601
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。a,b<=10^{500}a,b<=10500
输出格式
输出只有一行,代表a+b的值
输入输出样例
输入 #1
1 1
输出 #1
2
C++代码:
#include<iostream> #include<cstring> #include<string> using namespace std; int main() { string a; string b; cin>>a; cin>>b; if(a==b) cout<<"0";//特判a和b相等 else { int A[10000]={0},B[10000]={0},C[10000]={0};//A用来存a中的每一个数 。。。。C用来存a和b的每一位数相加的结果 int alen=a.length(); int blen=b.length(); int i,j; for(i=0;i<=alen;i++) A[alen-i]=a[i]-'0';//将a的每一位数转化为整数并逆序存入到A中 for(j=0;j<=blen;j++) B[blen-j]=b[j]-'0';//b的每一位数转化为整数并逆序存入到B中 int clen=1;//记录c的长度 int x=0;//记录进位 while(clen<=alen||clen<=blen) { C[clen]=A[clen]+B[clen]+x;//每一位相加之后再加上上一次进位数 x=C[clen]/10;//计算本次的进位数 C[clen]=C[clen]%10;//进位完了之后的数 clen++; } C[clen]=x;//记得最后要进位到后一位 while(C[clen]==0)//找出前缀为0的位置 clen--; for(int t=clen;t>0;t--) cout<<C[t];//逆序输出 } return 0; }
这个是c++的做法,万能的Python告诉我们他不存在什么大整数,直接一行代码搞定,(手动滑稽,)
print(int(input())+int(input()))