http://poj.grids.cn/practice/2980
//ylwh Accepted 260kB 0ms 701 B G++ 刚刚
#include <stdio.h>
#include <string.h>
int m, n, num1[201], num2[201], ans[4010];
char s1[201], s2[201];
int main()
{
int i, j;
while(scanf("%s%s", s1, s2) != EOF)
{
memset(num1, 0, sizeof(num1));
memset(num2, 0, sizeof(num2));
memset(ans, 0, sizeof(ans));
m = strlen(s1);
n = strlen(s2);
for(i=m-1, j=0; i>=0; i--, j++)
num1[j] = s1[i] - '0' ;
for(i=n-1, j=0; i>=0; i--, j++)
num2[j] = s2[i] - '0' ;
for(i=0; i<m; i++)
for(j=0; j<n ;j++)
ans[i+j] += num1[i] * num2[j];
for(i=0; i<4010; i++)
{
ans[i+1] += ans[i]/10;
ans[i] %= 10;
}
i = 4005;
while( !ans[i])
i--;
for(j=i; j>=0; j--)
printf("%d", ans[j]);
printf("\n");
}
return 0;
}