嗯还是a+b,但是这个并不一样,是高精,什么是高精呢,就是高级一点的加法(hhhhhh)
那为什么叫高精度呢,因为他数值可能会比较大,因为普通的a+b的范围之在2的32次方减一,也就是2147483647那么大,那如果比这个数值大呢,该怎么办,嗯,那就没办法了,hhhhhh,那就要用上我们的高精度。
题目描述:
高精度加法,相当于a+b problem,不用考虑负数
读入一
1 3
读入二
10000000000
10000000000//11位刚比普通好大一点点
输出一
4
输出二
20000000000
思路
就是普通的a+b是做不了的,那我们该用什么办法呢,我们应该把它转化成字符串来做,这样相对来说会简单一点,转化成字符串之后再相加就可以了,最后再解决一些进位就OK了
ok上代码
正文
#include<cstdio>
#include<iostream>
using namespace std;
string s1,s2,s3;
int a[2002],b[2005],c[2005];
int n,m,j,k,d,x;
int main(){
cin>>s1>>s2;
n=s1.size();
m=s2.size();
if (n>=m){
j=n;
} else {
j=m;
}
for (int i=0;i<n;i++){
a[i]=s1[n-i-1]-'0';
}
for (int i=0;i<m;i++){
b[i]=s2[m-i-1]-'0';
}
for (int i=0;i<=j;i++){
c[i]=c[i]+a[i]+b[i];
if (c[i]>9){
c[i]=c[i]-10;
c[i+1]=c[i+1]+1;
}
}
if (c[j]!=0){
j++;
}
for (int i=j-1;i>=0;i--){
cout<<c[i];
}
return 0;
}
大功告成(QAQ)
hhhh水了一篇题解(n_n)