解题笔记-n!(高精度阶乘(n<10000))

来源:互联网 发布:java系统源码下载 编辑:程序博客网 时间:2024/04/30 03:36

题面

输入一个数n(1 < n < 10000),输出这个数的阶乘

Format

Input

10

Output

3628800

题解

这是一道较为基本的高精题目,因为数据到了1e5,所以不能用正常做法(如递归、~~递推~~、~~pianfen~~了)。但这道高精较为基本,所以在此不详尽描述了。    

真不会的这里有基础级[传送门]

标程

#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;}