描述
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
格式
输入格式
输入两个高精度正整数M和N。
输出格式
求这两个高精度数的积。
样例
输入样例
36 3
输出样例
108
限制
时间限制: 1000 ms
内存限制: 65536 KB
#include<bits/stdc++.h>
using namespace std;
int main()
{
string n, m;
int a[105], b[105], ans[20005];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(ans, 0, sizeof(ans));
cin >> m;
cin >> n;
int j=0;
for (int i=m.length()-1; i>=0; i--){ //m=123,倒置后为a[0]=3,a[1]=2,a[2]=1
a[j++] = m[i] - '0';
}
j=0;
for (int i=n.length()-1; i>=0; i--) {
b[j++] = n[i] - '0';
}
int tmp, k;
for (int i=0; i<m.length(); i++) {
k=i;
tmp=0; //刷新,不然18*18=334,但实际上等于324
for (int j=0; j<n.length(); j++) {
tmp = tmp + ans[k] + a[i]*b[j];
ans[k] = tmp % 10;
k++;
tmp /= 10;
}
if (tmp) { //受限于n的长度,可能还有tmp进位没有归0
ans[k++] = tmp;
}
}
for (int i=k-1; i>=0; i--) {
printf ("%d", ans[i]);
}
return 0;
}