题目链接: N! HDU - 1042
题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
示例1
输入
1
2
3
输出
1
2
6
思路:
#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<iomanip>
#define ull unsigned long long
using namespace std;
const int maxn = 10007;
int a[10000];
int main()
{
int m,n;
while(scanf("%d",&n)!=EOF)
{
if(n<0)
continue;
memset(a,0,sizeof(a));
m=0;
a[0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=m;j++)
{
a[j]=a[j]*i;
if(j>0&&a[j-1]>=10000)
{
a[j] = a[j] + a[j-1]/10000;
a[j-1]=a[j-1]%10000;
}
if(a[m]>=10000)
m++;
}
printf("%d",a[m]);
for(int i=m-1;i>=0;i--)
printf("%04d",a[i]);
printf("\n");
}
}
还有公式: