高精度加法

高精度加法模板

高精度加法模板

#include <bits/stdc++.h>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B){
	if(A.size() < B.size()) return add(B, A);   //位数大的放前面 
	
	vector<int> C;  //存放和 
	int t = 0;  //t:进位  别忘记初始化! 
	
	for(int i = 0; i < A.size(); i++){
		t += A[i];
		if(i < B.size()) t += B[i];
		C.push_back(t % 10);  //和的i位上的数 
		t /= 10;  //更新进位 
	}
	
	if(t) C.push_back(t);  //如果最后还有进位,就直接push进位
	return C;
}

int main(){
	string a, b;  //用字符串读高精度的数 
	vector<int> A, B;  //用vector数组存高精度的数 
	cin >> a >> b;
	
	
	//按 个位 十位 百位...n位 存放   
	for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0'); //将字符转换成数值 
	for(int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0');
	
	vector<int> C = add(A, B);  //高精度和也用vector存 
	
	for(int i = C.size() - 1; i >= 0; i--) cout << C[i];  //别忘记也要倒着输出 
	cout << endl;
	
	return 0;
}

posted @ 2022-11-28 09:51  csai_H  阅读(75)  评论(0)    收藏  举报