时间限制:1秒
空间限制:65536K
热度指数:1902
算法知识视频讲解
题目描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
示例1
输入
4 5 15
输出
24 120 1307674368000
由于数字比较大,要用大整数来做
// pat.cpp : 定义控制台应用程序的
//#include "stdafx.h"
#include"stdio.h"
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
using namespace std;
typedef long long ll;
struct bign{
int d[10000];
int len;
bign(){
memset(d,0,sizeof(d));
len=0;}
};
bign mul(bign b,int a){
bign c;int carry=0;
for(int i=0;i<b.len;i++)
{carry=b.d[i]*a+carry;
c.d[c.len++]=carry%10;
carry/=10;
}
while(carry!=0){
c.d[c.len++]=carry%10;
carry/=10;
}
return c;
}
int n;
int main(){
//freopen("c://jin.txt","r",stdin);
while(cin>>n){
bign b;b.d[0]=1;
b.len=1;
for(int i=2;i<=n;i++)
b=mul(b,i);
for(int i=b.len-1;i>=0;i--)
cout<<b.d[i];
cout<<endl;
}
//freopen("CON","r",stdin);
//system("pause");
return 0;
}