社区讨论

萌新求助,为什么有的结果准确有的不

P1303A*B Problem参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lrtkfr0x
此快照首次捕获于
2024/01/26 02:46
2 年前
此快照最后确认于
2024/01/26 11:03
2 年前
查看原帖
CPP
#include<iostream>
#include<cstring>
using namespace std;
int main() {
	char a1[2001] = " ", b1[2001] = " ";
	int len1 = 0, len2 = 0,t1=0,t2=0,t3=0;
	int a[2010] = { 0 }, b[2010] = { 0 }, ans[10001] = { 0 }, m[2001][2001] = { 0 };
	cin >> a1 >> b1;
	len1 = strlen(a1);
	len2 = strlen(b1);
	if (a1[0] == '0' || b1[0] == '0') {
		cout << "0 " << endl;
		return 0;
	}
	for (int i = 0; i < len1; i++) {
		a[i] = a1[i] - '0';
	}
	for (int i = 0; i < len2; i++) {
		b[i] = b1[i] - '0';
	}
	for (int i = len1; i >0; i--) {
		a[i] = a[i-1];
	}
	a[0] = 0;
	for (int i = len2; i > 0; i--) {
		b[i] = b[i - 1];
	}
	b[0] = 0;
	for (int i = 0; i < len2; i++) {
		t1 = 0;
		for (int j = len1; j >= 0; j--) {
			m[i][j] = (a[j] * b[len2-i] + t1) % 10;
			t1= (a[j] * b[len2-i] + t1) / 10;
		}
	}
	for (int i = len2 - 1; i >= 0; i--) {
		for (int j = 0; j < len2 - 1 - i; j++) {
			for (int q = len1+1; q >0; q--) {
				m[i][j + q] = m[i][j + q - 1];
			}
			m[i][j] = 0;
		}
	}
	for (int i = 0; i < len2; i++) {
		t3 = 0; 
		for (int j = len1 + len2; j >= 0; j--) {
			ans[j] = (ans[j] + m[i][j] + t3) % 10;
			t3 = (ans[j] + m[i][j] + t3) / 10;
		}
	}
	int c = 0;
	for (int i = 0; i <= len1 + len2-1; i++) {
		if (ans[i] == 0 && c == 0) {
			continue;
		}
		else {
			if (ans[i] != 0) {
				cout << ans[i];
				c = 1;
			}
			else {
				cout << ans[i];
			}
		}
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...