求N!的值 【问题描述】 用高精度方法,求N!的精确值(N以一般整数输入)。
【输入样例】ni.in 10
【输出样例】ni.out 3628800
本题解题障碍在于,受数据类型取值范围的限制,当N值很大时,阶层的结果放到变量中会造成数据溢出。
解题思路:
将相乘的结果,以单个的数字逆序存在int[ ] f数组里,f[0]存放当前数组的有效长度。求阶层的每一步中,都是用当前数字乘以数组中的每位数字,因为是逆序存放,所以从f[1]开始乘,每一位乘完的数字处理好进位。
单步过程以5040*8举例如下(省略了存放有效位数的f[0]):
step1:
------------------------------------------------------------------
step2: