测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A24199. 高精度乘法

填空题 困难

题目描述

高精度乘法

题目描述

输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。

输入

输入两个高精度正整数M和N。

输出

求这两个高精度数的积。

输入样例

36
3

输出样例

108

参考答案

#include <bits/stdc++.h> using namespace std; #define N 505 void Multiply(int a[], int b[], int r[])//高精乘高精 { int i; for(i = 1; i <= a[0]; ++i) { int c = 0; for(int j = 1; j <= b[0]; ++j) { r[i+j-1] += a[i]*b[j] + c; c = r[i+j-1] / 10; r[i+j-1] %= 10; } r[i+b[0]] += c; } i = a[0] + b[0];//确定数字位数 while(r[i] == 0 && i > 1) i--; r[0] = i; } void toNum(char s[], int a[]) { a[0] = strlen(s); for(int i = 1; i <= a[0]; ++i) a[i] = s[a[0] - i] - '0'; } void showNum(int a[]) { for(int i = a[0]; i >= 1; --i) cout << a[i]; } int main() { int a[N] = {}, b[N] = {}, r[N] = {}; char s[N]; cin >> s; toNum(s, a); cin >> s; toNum(s, b); Multiply(a, b, r); showNum(r); return 0; }
上一题 下一题