求助
  • 板块灌水区
  • 楼主wzx2012
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/1/17 14:11
  • 上次更新2025/1/17 16:44:08
查看原帖
求助
1098756
wzx2012楼主2025/1/17 14:11

再打高精度乘法时遇到了一个问题,什么东西也输不出来

#include<bits/stdc++.h>
using namespace std;
string cheng(string x, string y){
	cout << 1;//检测,可这个“1”都输不出来!!
	int xn = x.size(), yn = y.size();
	vector <int> a, b;
	for(int i = 0;i < xn;i++)	a.insert(a.begin(), (int)(x[i]-'0'));
	for(int i = 0;i < yn;i++)	b.insert(b.begin(), (int)(y[i]-'0'));
	for(int i = 0;i < abs(xn-yn);i++){
		if(xn > yn)	b.push_back(0);
		else		a.push_back(0);
	}
	int c[4000005];	memset(c, 0, sizeof(c));
	for(int i = 0;i < xn;i++){
		for(int j = 0;j < yn;i++){
			c[j+i] += a[i]*b[j];
			if(c[j+i] >= 10)
				c[j+i] %= 10, c[j+i+1] = c[j+i+1]+c[j+i]/10;
		}
	}
	string k = "";  bool flag = false;
	for(int i = xn + yn;i >= 0;i--){
		if(!flag && c[i] != 0){
			k = k + (char)(c[i]+'0'), flag = true;
		}
	}
	return k;
}
int main(){
	string a, b;
	cin >> a >> b;
	cout << cheng(a, b);
	return 0;
}

不知哪出了问题,萌新求助

2025/1/17 14:11
加载中...