大数运算(二) —— 大数加法
注:本程序适用于100000位以内的加法运算,效率很高,在内存和时间允许的情况下可完成10^8位的加法运算
下面用实例来模拟一下我的方法:
输入:a=1234567890123456789 b=9876543210987654321
a : 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1
b : 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
10 10 10 10 10 10 10 10 10 0 10 10 10 10 10 10 10 10 10
0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
输出:11111111101111111110
#include <iostream>#include <cstring>using namespace std;int main(){ char a[100050],b[100050]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); cin>>a>>b; strrev(a); strrev(b); for(int i=0; i<strlen(a); i++) { if(b[i]) b[i]+=a[i]-'0'; else b[i]+=a[i]; } for(int i=0; i<strlen(b); i++) if(b[i]>'9') { if(b[i+1]) b[i+1]++; else b[i+1]+='1'; b[i]-=10; } strrev(b); cout<<b<<endl; return 0;}