【题目描述】
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
【输入】
输入两个高精度正整数M和N。
【输出】
求这两个高精度数的积。
【输入样例】
36 3
【输出样例】
108
#include<iostream> #include<cstring> using namespace std; int main() { char a[201], b[201]; int a2[201]={}, b2[201]={}, c[402]={}; cin >> a >> b; int lena = strlen(a), lenb = strlen(b); for(int i=0; i<=lena-1; i++) { a2[lena-i] = a[i] - '0'; } for(int i=0; i<=lenb-1; i++) { b2[lenb-i] = b[i] - '0'; } // 难点:高精度*高精度=a*b for(int i=1; i<=lenb; i++) // 乘数 { int jw = 0; for(int j=1; j<=lena; j++) // 被乘数 { // i = 1,c[i+j-1] = 0; i=2,c[i+j-1]= 上一位的结果。 int t = b2[i]*a2[j] + jw + c[i+j-1]; jw = t/10; c[i+j-1] = t%10; } // 处理每次相乘的最高位,可能是1或0。 c[lena+i] = jw; } // 处理前置0 int lenc = lena + lenb; if(c[lenc]!=0) cout << c[lenc]; for(int i=lenc-1; i>=1; i--) { cout << c[i]; } return 0; }