利用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; }



