您的位置:首页 > 其它

大数相乘之求N!

2015-08-19 17:00 351 查看
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define MAXN 10000+5
int main()
{
int f[MAXN],c=0,n,i,len;

while(scanf("%d",&n)!=EOF)
{
memset(f,0,sizeof(f));
f[0]=1;
len=0;
for(int i=2;i<=n;i++)   //阶乘乘的数
{
c=0;    //进位
for(int j=0;j<=len;j++)  //被乘数的每一位都要乘乘数
{
f[j]=f[j]*i+c;
c=f[j]/10000;
f[j]%=10000;
}
if(c!=0)
f[++len]=c;   //这里是前置运算符,若写成len++结果会出错
}
printf("%d",f[len]);   //把最高位没有凑够四位的输出,防止有前导0
for(i=len-1;i>=0;i--)
printf("%04d",f[i]);       //四位四位输出,不够的位数补0
printf("\n");

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: