高精度加法
Description
输入两个整数x,y,输出它们的和。
Input
输入两个整数x,y(0 <= x,y <= 10^100)
Output
输出它们的和
举个栗子:123 456
1 2 3
4 5 6
3+6=9;2+5=7;1+4=5;
所以答案为579。~~ 显得十分智障 ~~
总结:高精度加法就是我们小学的笔算,按位加,最后进位就OK了
附上代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <iomanip>
using namespace std;
int a[105],b[105];
void s(int a[]) {
string s;
cin>>s;
a[0]=s.length();
for(int i=1; i<=a[0]; i++)
a[i]=s[a[0]-i]-'0';
}
void jia(int a[],int b[]) {
if(a[0]<b[0])a[0]=b[0];
for(int i=1; i<=a[0]; i++)a[i]+=b[i];
for(int i=1; i<=a[0]; i++) {
a[i+1]+=a[i]/10;
a[i]=a[i]%10;
}
if(a[a[0]+1]>0)a[0]++;
}
int main() {
int i;
s(a);
s(b);
jia(a,b);
for(i=a[0]; i>=1; i--)cout<<a[i];
return 0;
}