题目描述:
求10000以内n的阶乘。
输入格式:
只有一行输入,整数n(0<=n<=10000)。
输出格式:
一行,即n!的值。
样例输入:
100
样例输出:
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
时间限制: 1000ms
空间限制: 128MB
又是一道板子题。
代码实现:
#include<bits/stdc++.h>
using namespace std;
long long a[100001],n,jw,len,temp;
string ans;
int main(){
cin>>n;
if(n==0)return cout<<1,0;
temp=n;
while(temp)a[++len]=temp%10,temp/=10;
for(int i=n-1;i>=2;i--){
jw=0;
for(int j=1;j<=len;j++){
a[j]=a[j]*i+jw;
jw=a[j]/10;
a[j]%=10;
}
while(jw)a[++len]=jw%10,jw/=10;
}
while(a[len]==0)len--;
for(int i=len;i>=1;i--)ans.push_back(a[i]+'0');
cout<<ans;
return 0;
}