高精度加法有问题(恼
  • 板块灌水区
  • 楼主Manki23333333
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/1/31 23:20
  • 上次更新2023/10/24 02:17:55
查看原帖
高精度加法有问题(恼
871004
Manki23333333楼主2023/1/31 23:20
#include <bits/stdc++.h>
using namespace std;
class Super_Int {
	public:
		string Var;
		Super_Int operator + (Super_Int Var2_a){
			string Var2,Var1,Ans;
			Super_Int AnsT;
			Var1 = Var;
			Var2 = Var2_a.Var;
			vector<char> A,B,C;
			C.push_back(0);
			if(Var2.size() < Var.size()){
				swap(Var1,Var2);
			}
			int lengthOfVar1 = (int)Var1.size(),lengthOfVar2 = (int)Var2.size();
			if(lengthOfVar1 < 2 && lengthOfVar2 < 2){
				AnsT.Var=Var1[0]+Var2[0]-'0';
				if(AnsT.Var[0] >= 10){
					AnsT.Var += AnsT.Var[0] - 10;
					AnsT.Var[0] = '1';
				}
				return AnsT;
			}
			for(int i=lengthOfVar2-1;i>-1;i--){
				B.push_back(Var2[i]-'0');
			}
			for(int i=lengthOfVar1-1;i>-1;i--){
				A.push_back(Var1[i]-'0');
			}
			//cout <<  A.size() << " ";
			//for(int i=0;i<(int)A.size();i++){
			//	cout << (int)A[i] << " ";
			//}
			//cout << endl << B.size() << " ";
			//for(int i=0;i<(int)B.size();i++){
			//	cout << (int)B[i] << " ";
			//}
			//Do it;
			for(int i=0;i<lengthOfVar2;i++){
				C.push_back(A[i]+B[i]);	
				if(C[i] >= 10){
					C[i] -= 10;
					C[i-1] ++;
				}
				//cout << (int)C[i] << " " << (int)C[i+1] << " ";
			}
			//End Do it;
			//cout << flag << " ";
			for(int i=lengthOfVar2-1;i>-1;i--){
				Ans += C[i+1]+'0';
			}
			AnsT.Var = Ans;
			return AnsT;
		}
		void Input(){
			cin >> Var;
		}
		void Output(){
			cout << Var;
		}
};
int main(){
	Super_Int a,b,c;
	a.Input();b.Input();
	c = a + b;
	c.Output();
	return 0;
}

求调 pls

对于这段代码的 HACK 数据:

输入

100000 12

正确输出

100012

我的结果

1i1012
2023/1/31 23:20
加载中...