时间限制:3 秒
内存限制:128 兆
特殊判题:否
提交:7601
解决:2749
- 题目描述:
-
输入一个正整数N,输出N的阶乘。
- 输入:
-
正整数N(0<=N<=1000)
- 输出:
-
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
- 样例输入:
-
4
5
15
- 样例输出:
-
24
120
1307674368000
大数的乘法。
//Asimple
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cctype>
#include <cstdlib>
#include <stack>
#include <cmath>
#include <set>
#include <map>
#include <string>
#include <queue>
#include <limits.h>
#define INF 0x7fffffff
using namespace std;
const int maxn = ;
typedef long long ll;
int n;
ll a[maxn]; int main(){
while( ~scanf("%d",&n) ){
if( n == ){
printf("1\n");
continue;
}
//进位
int c = , len = ;
memset(a,,sizeof(a));
a[] = ;
for(int i=; i<=n; i++){
c = ;
for(int j=; j<len; j++){
a[j] = a[j] * i + c;
if( a[j]>= ){
c = a[j] / ;
a[j] = a[j] % ;
} else c = ;
}
while( c != ){
int t = c % ;
a[len++] = t;
c = c / ;
}
}
int i, j;
for(i=maxn; i>=; i--){
if( a[i] != ){
break;
}
}
for(j=i; j>=; j--){
printf("%d",a[j]);
}
printf("\n");
}
return ;
}