社区讨论
萌新求助,为什么有的结果准确有的不
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 条回复,欢迎继续交流。
正在加载回复...