Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
169219 罗嘉为 高精度乘法 C++ 通过 100 26 MS 21764 KB 863 2024-08-20 15:45:47

Tests(30/30):


#include <bits/stdc++.h> using namespace std; char a1[2500], b1[2500]; int a[2500], b[2500], c[5500000], x, t, k, i, j; bool flag = false; int main(){ memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); cin >> a1; cin >> b1; k = strlen(a1) + strlen(b1); for(i = 0; i < strlen(a1); i++){ a[i + 1] = a1[strlen(a1) - i - 1] - 48; } for(i = 0; i < strlen(b1); i++){ b[i + 1] = b1[strlen(b1) - i - 1] - 48; } for(i = 1; i <= strlen(a1); i++){ x = 0; for(j = 1; j <= strlen(b1); j++){ t = a[i] * b[j]; c[i + j - 1] = t % 10 + x + c[i + j - 1]; x = t / 10; if(c[i + j - 1] >= 10){ x += c[i + j - 1] / 10; c[i + j - 1] %= 10; } } c[i + strlen(b1)] = x; } for(i = k; i > 0; i--){ if(c[i] != 0) flag = true; if(flag || i == 1) cout << c[i]; } return 0; }


测评信息: