利用vector
#include
#include
using namespace std;
vector a,b; // 存储大整数,高位存储在高位
//重载+、-、*、/,同时满足大整数与大整数、与整数的加法
vector operator +(vector a, vector b){ //大整数 + 大整数
vector ans; //记录输出结果
int carry = 0; //表示进位,初值为0
for(int i = 0; i < a.size() && i < b.size(); ++i){
carry += a[i] + b[i]; //当前位相加,并加上进位
ans.push_back(carry % 10); //输入个位
carry /= 10; //舍弃个位
}
//当a或b还未加完时,则继续相加,以下循环只会触发一个
for(int i = ans.size(); i < a.size(); ++i){
carry += a[i];
ans.push_back(carry % 10);
carry /= 10;
}
for(int i = ans.size(); i < b.size(); ++i){
carry += b[i];
ans.push_back(carry % 10);
carry /= 10;
}
//最后可能会有最高位进位问题,且只有一位
if(carry) ans.push_back(carry);
return ans;
}
vector operator +(vector a, int b){ // 大整数+整数
vector ans;
long long temp = b; //表示进位并存放结果,因整数相加可能溢出,故用长整型
for(int i = 0 ; i a = {5,7,6,9}, ans;
int b = 8869;
ans = a + b;
for(int i = ans.size() - 1; i >= 0; --i)
cout << ans[i];
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)