- 高精度乘法
- 2009-08-25 11:27:43 @
#include
long int m[10000]={0},l[10000]={0};
char p;
int y[8000000]={0};
int main()
{
long int phoebe;
long int my,ly;
int ml=10000;
int a,b;
long int c;
b=1;
for(a=0;;)
{
scanf("%c",&p);
if(p!='\n')
{
ml=ml/10;
m=(p-48)*ml+m;
a++;
if(a==4)
{
b++;
a=0;
ml=10000;
}
}
else
break;
}
if(a==0)
m[0]=b-1;
else
{
m[0]=b;
my=ml;
}
ml=10000;
b=1;
for(a=0;;)
{
scanf("%c",&p);
if(p!='\n')
{
ml=ml/10;
l=(p-48)*ml+l;
a++;
if(a==4)
{
b++;
a=0;
ml=10000;
}
}
else
break;
}
if(a==0)
l[0]=b-1;
else
{
l[0]=b;
ly=ml;
}
for(a=m[0];a>=1;a--)
{
c=m[0]-a;
for(b=l[0];b>=1;b--)
{
phoebe=m[a]*l;
y[c+1]=y[c+1]+(phoebe+y[c])/10000;
y[c]=(phoebe+y[c])%10000;
c++;
}
}
if(y[c]>1)
printf("%d",y[c]);
if(my*ly0;a--)
printf("%d",y[a]);
y[0]=y[0]/my*ly;
printf("%d\n",y[0]);
}
else
{
for(a=c-1;a>1;a--)
printf("%d",y[a]);
y[1]=y[1]/(my*ly/10000);
printf("%d\n",y[1]);
}
return 0;
}
2 条评论
-
fx2003 LV 8 @ 2009-08-25 12:30:32
谢谢啊
-
2009-08-25 12:16:12@
~
凭记忆:可能是内存爆掉或 访问了 不属于你管辖的内存 就相当于越界
- 1