10000以内n的阶乘
题目描述
求 10000以内n的阶乘。
输入格式
只有一行输入,整数 n(0≤n≤10000)。
输出格式
一行,即n!的值。
题目分析
n的阶乘求法:1 * 2 * 3 * ……* n
(i=1乘到i=n)
这道题显然是一道低精度乘高精度的题
其中i是小于10000的数,(i-1)的阶乘是一个很大的数
要点:
1.用数组来存储(i-1)!
2.找到一个变量存储数组的个数——避免0的存在
算法流程:
1.输入
2.1 先将i与数组里的每一个值都乘一遍
2.2 处理普通位进位:
——向前进位num/10
——自身赋值num%10
2.3处理首位进位及确定数组长度
——保证首位>0
——如果首位需要进位 则使用while循环进位,每进一次此时数组的个数要++
3.输出——从所记录的数组长度开始逆序输出
代码如下
#include <bits/stdc++.h>
using namespace std;
int num[100000];
int main(