转载: http://blog.csdn.net/skyler2003 https://blog.csdn.net/skyler2003/article/details/78289844
题面
输入一个数n(1 < n < 10000),输出这个数的阶乘Format
Input
10Output
3628800
题解
这是一道较为基本的高精题目,因为数据到了1e5,所以不能用正常做法(如递归、~~递推~~、~~pianfen~~了)。但这道高精较为基本,所以在此不详尽描述了。
1
真不会的这里有基础级[传送门]标程
#include<iostream>
#include<cstring>
#include<cstdio>
//极为简易的高精阶乘
using namespace std;
int a[40001],n,maxx=1;
int main(){
cin>>n;
a[0]=1;
for(int i=1;i<=n;i++){
int r=0;//进位
for(int j=0;j<maxx;j++){//先算
int w=a[j]*i+r;
a[j]=w%10;
r=w/10;
}
while(r){//进位
a[maxx++]=r%10;
r/=10;
}
}
for(int i=maxx-1;i>=0;i--)
putchar(a[i]+'0');//小小的输出优化
putchar('\n');
return 0;
}