您的位置:首页 > 编程语言

阶乘计算升级版

2017-09-09 15:41 302 查看
这题数字到后面很大,不能用普通的方法。用数组进行大整数的乘法。手工算法。

int mutiply(int N);
void Print_Factorial(int N)
{
double sum=1;
int s;
if(N<0)
{
printf("Invalid input\n");
return;
}
if(N==0)
{
printf("1\n");
return;
}
if(N>0)
{
mutiply(N);
return;

}
}
int mutiply(int N)
{
int s;
int a[3000]={0};
a[0]=1;
int c;//进位用
for(int i=2;i<=N;i++)
{
c=0;
for(int j=0;j<3000;j++)
{
s=i*a[j]+c;
a[j]=s%10;
c=s/10;
}
}
int k;
for(int i=2999;i>=0;i--)
{
if(a[i])
{
k=i;
break;
}
}
for(int i=k;i>=0;i--)
printf("%d",a[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息