vector<int> u; //储存a倒序的每个数
vector<int> v; //储存b倒序的每个数
vector<int> add(vector<int> m, vector<int> n) {//高精度加法
vector<int> temp;//temp数组存储相加后的每个数
int t=0;//t作为每个数相加的和
for (int i = 0; i < m.size() || i < n.size(); i++) {//遍历u,v数组
if (i < m.size()) t += m[i];
if (i < n.size()) t += n[i];
temp.push_back(t % 10);//向temp尾部中塞入每个数相加后的最后一位
t /= 10;//计算进位值存入下一位的计算
}
if (t > 0) {//当最后两个数相加后仍需要进位
temp.push_back(1);//向temp尾部塞入1
}
return temp;
}
int main() {
string a, b;
cin >> a >> b;
/*例:a=123456,b=123456*/
for (int i = a.size() - 1; i >=0; i--) u.push_back(a[i] - '0');//将字符串形式的a,b转换为int十进制形式
for (int i = b.size() - 1; i >=0; i--) v.push_back(b[i] - '0');
//从a,b最后一位开始读取,逐个塞入u,v的尾部
/*例:u=654321,v=654321*/
vector<int> c = add(u, v);
for (int i = c.size() - 1; i >= 0; i--) printf("%d", c[i]);//计算后再次倒序输出c
/*例:c=219642,输出246912为最后答案*/
return 0;
}
//模拟竖式计算过程,重点在倒序相加,便于计算机处理
//使用vector动态数组,节省空间
标签:temp,高精度,int,back,笔记,vector,加法,倒序,size From: https://www.cnblogs.com/dianman/p/18449021