题目描述
编写程序,输入整数n(0 ≤ N ≤ 10000),计算n!
输入
有多组数据,每组一个n
输出
每组占1行
样例输入
1
2
3
15
20
样例输出
1
2
6
1307674368000
2432902008176640000
#include <stdio.h>
int main()
{
int n,i,j,m,k,a,w[40000];
while(scanf("%d",&n)!=EOF)
{
w[0]=1;
k=0;
for(i=1;i<=n;i++)
{
m=0;
for(j=0;j<=k;j++)
{
a=w[j]*i+m;
m=a/10;
w[j]=a%10;
}
while(m>0)
{
k++;
w[k]=m%10;
m=m/10;
}
}
for(i=k;i>=0;i--)
printf("%d",w[i]);
printf("\n");
}
}
#include<stdio.h>
#define N 100000
int a[N];
void f(int n ) //计算n!
{ int i,j,c,s;
a[0]=1;
for (i=2; i<=n; i++) //乘i
{ c=0;
for (j=0; j<N; j++)
{ s=a[j]*i+c;
a[j]=s%10;
c=s/10;
}
}
}
//输出:
void show()
{ int i;
//去掉前面的0
for (i=N-1; i>=0; i--)
if (a[i]!=0) break;
//显示各位数字
for ( ; i>=0; i--)
printf("%d",a[i]);
printf("\n");
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
f(n);
show();
}
}