对于给定的整数n,当n较大时,n!的计算就很复杂,需要通过高精度计算得到结果,显然得到的n!的位数很多。所以定义n的时候最好用long,一般涉及n!的问题有:
- n!尾部的0的个数是多少?
- n!是多少位数字?
- n!最前面的一位数字是几?
给定自然数n,依次输出上述3个数值。0<n<.
(1!=1,2!=2,3!=6,4!=24,5!=120,6!=720,7!=5040,....)
分析
n!尾部0的个数是多少:
n!可以写为n!=a*10^m.其中,m是n!尾部0的个数,而a是一个整数,例如:
- 5!=120=12*10
- 7!=5040=504*10
- 10!=362800=3628*10^2
可以发现:n!尾部0的个数与10的幂次有关。
10^m=2^m*5^m
而观察1 2 3 4 5 6 7 8 9 10 ...15 ... 20 ...25...30 ...50...75...100...125..
因子5出现的个数一般要比因子2出现的个数少。所以m由5的幂次决定。