题目:大整数乘法。
分析:大整数,模拟。
说明:注意数组清零。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
int A[505],B[505],C[505];
char buf[505];
int input(int *a)
{
if (scanf("%s",buf) == EOF) return 0;
for (int i = 0 ; i < 505 ; ++ i)
a[i] = 0;
int len = strlen(buf);
for (int i = 0 ; i < len ; ++ i)
a[i] = buf[len-1-i] - '0';
return 1;
}
void multiply (int *c, int *a, int *b)
{
for (int i = 0 ; i < 505 ; ++ i)
c[i] = 0;
for (int i = 0 ; i < 251 ; ++ i)
for (int j = 0 ; j < 251 ; ++ j)
c[i+j] += a[i]*b[j];
for (int i = 0 ; i < 505 ; ++ i) {
c[i+1] += c[i]/10;
c[i] %= 10;
}
}
void output(int *a)
{
int end = 504;
while (!a[end] && end > 0) -- end;
while (end >= 0) printf("%d",a[end --]);
printf("\n");
}
int main()
{
while (input(A)) {
input(B);
multiply(C, A, B);
output(C);
}
return 0;
}