level 8
/* 输入其他数据没问题,输入98 99 999 99999之类的数就有问题了! */
#include <stdio.h>
#include <string.h>
const int SIZE=20000;
int input (char num[])
{
int length, ist;
char tmp[SIZE];
scanf("%s",tmp);
length=strlen(tmp)-1;
for (ist=0; ist<=length; ist++)
num[length-ist]=tmp[ist]-'0';
return length+1;
}
int mult (char foo[], int foolen, char bar[], int barlen, char sol[])
{
int ist, jnd, pos;
for (ist=0; ist<foolen; ist++)
for (jnd=0; jnd<barlen; jnd++)
{
pos=ist+jnd;
sol[pos] += foo[ist]*bar[jnd];
if ( sol[pos]>10 )
{
sol[pos+1]=sol[pos]/10;
sol[pos]%=10;
}
}
pos++;
while ( sol[pos]!=0 )
{
if (sol[pos]>10)
{
sol[pos+1]=sol[pos]/10;
sol[pos]%=10;
}
pos++;
}
return pos;
}
void output (char num[], char length)
{
char tmp[SIZE+SIZE+2];
int ist;
length--;
for (ist=0; ist<=length; ist++)
tmp[length-ist]=num[ist]+'0';
printf("%s\n", tmp);
}
int main ()
{
char foo[SIZE], bar[SIZE], sol[SIZE+SIZE+2];
int foolen, barlen, sollen;
foolen = input(foo);
barlen = input(bar);
sollen = mult(foo, foolen, bar, barlen, sol);
output(sol,sollen);
return 0;
}
2010年10月31日 14点10分