题目描述
高精度乘,求两个很大的非负整数相乘的结果。
输入
2个非负整数,每个一行,每个整数不超过240位。
输出
一个整数,表示相乘的结果。
#include <bits/stdc++.h> using namespace std; string s1, s2; int a[250], b[250], c[500]; int main(int argc, char const *argv[]) { // 968 // 94 int len1, len2; cin >> s1 >> s2; len1 = s1.size(); len2 = s2.size(); int s; for (int i = 0; i < len1; i++) a[i] = s1[len1 - i - 1] - '0'; for (int i = 0; i < len2; i++) b[i] = s2[len2 - i - 1] - '0'; for (int i = 0; i < len1; i++) { for (int j = 0; j < len2; j++) { c[i + j] = c[i + j] + a[i] * b[j]; if (c[i + j] >= 10) { c[i + j + 1] = c[i + j + 1] + c[i + j] / 10; c[i + j] = c[i + j] % 10; } } } for (int i = len1 + (len2 - 1); i >= 0; i--) { if (c[i] != 0) { s = i; break; } } for (int i = s; i >= 0; i--) { cout << c[i]; } return 0; }