题目链接:广大OJ1372
本题亦为广大15级第一次周赛的J题。
题目内容
Problem Description
阶乘的计算公式是:n!=1*2*3*4*5*……*n
例如说,2的阶乘是2,3的阶乘是6
现在要做的程序是,输入一个数n,输出n的阶乘。
Input
多组输入数据。
每组输入数据占一行,为一个整数n(1<=n<=5000)
Output
对于每组输入,输出n的阶乘,占一行。
Sample Input
3
2
Sample Output
6
2
Hint
注意细节。
解题思路
所谓细节就是,n的最大值可以是5000。这意味着n的阶乘会非常大,大到连long long都无法储存。
对于这种题,用Java的大整数类解决无疑是最方便也是最快的。不过这里讨论的是C或者C++的解法,也就是高精度算法中的大整数数乘以小整数。
高精度算法的核心思想就是,使用一个数组来储存一个大数,按位储存。
例如说,用这个方法储存数字182738,就可以建一个数组a[]