Description
阶乘(factorial)是基斯顿.卡曼于1808年发明的运算符号,是指指从1乘以2乘以3乘以4一直乘到所要求的数。例如,所要求的数是4,则阶乘式是1×2×3×4,得到的积是24,24就是4的阶乘。 例如所要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1×2×3×……×n,设得到的积是x,x就是n的阶乘。
在表达阶乘时,就使用“!”来表示。如h阶乘,就表示为h!
以下列出1至5的阶乘:
1!=1,
2!=2,
3!=6,
4!=24,
5!=120
另外,数学家定义,0!=1,所以0!=1!
通常我们所说的阶乘是定义在自然数范围里的,小数没有阶乘,像0.5!,0.65!,0.777!都是错误的。
现给定正整数n,请你编程求n!。
- Input
单组样例,输入一个正整数n,0≤n≤5000。
- Output
输出n的阶乘n!。
- Sample Input
4
- Sample Output
24
#include<iostream>
using namespace std;
#define N 175000
int a[N]={1,0};
int total=0;
/*void solve(int n)
{
int i,c=0;
for(i=0;i<total+6;i++)
{
c=a[i]*n+c;
a[i]=c%10;
c=c/10;
}
total=total+8;
for(;a[total]==0;total--);
}*/
int main()
{
int n,i,j,c;
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
a[0]=1;
for(i=2;i<=n;i++)
{
c=0;
for(j=0;j<total+6;j++)
{
c=a[j]*i+c;
a[j]=c%10;
c=c/10;
}
total=total+8;
for(;a[total]==0;total--);
}
for(;total>=0;total--)
printf("%d",a[total]);
printf("\n");
}
return 0;
}