题意:已知两个数a,b,求它们的和(1<=a,b<=10^1000)
显然,这道题如果直接加法会爆零WA所以,我们采用高精度加法
高精度加法使用字符串进行输入,并用数组进行存储和计算。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std; char s[100001]; struct hp{ int len;//该高精度的位数 int s[100001];//字符串转为数组存储 }; hp a; hp b; hp c; void change(string s,hp &a){ int i,m; a.len=s.size(); m=a.len; for(i=1;i<=m;i++){ a.s[i]=s[m-i]-48; } }//转为数组存储 void plas(hp a,hp b,hp &c){ int i,len; if(a.len
=10){ c.s[i]-=10; c.s[i+1]++; } } if(c.s[len+1]>0) len++; c.len=len; }//高精度加 int main() { int i,j,k; cin>>s; change(s,a); cin>>s; change(s,b); plas(a,b,c); for(i=c.len;i>=1;i--) cout<