第382問の解答
問題[整数の性質 (場合の数)]
左図のように、1からnまでの整数を全部掛け算すると(n!=nの階乗)、末尾にいくつか0が続きます。 では、0以上1000以下の整数の中で、末尾に続く0の個数になることができないものはいくつあるでしょうか。
解答例1
マサルさん、Taroさん、CRYING DOLPHINさん、もありすさん、那由他さん、sugitakukunさん、シンクロさん、拓パパさん、小西孝一さん、ミミズクはくず耳さん、小学名探偵さん、ちこりんさん、M.Hossieさん、ポケモンハルカさん、 他多数
10=2×5と素因数分解できますので、n!で末尾に続く0の個数は、n!に含まれる2と5の個数を数えることになりますが、2の個数は5の個数よりもはるかに多いので、5の個数だけ調べればいいことになります。
上表より、1から順に整数を掛け合わせていくと、5の倍数が現れるたびに1個ずつ5の個数が増えていきます。
ただし、25の倍数や125の倍数のように5を複数個因数として持つ整数のときは、累計個数として表せない整数が発生します。(5kの倍数のときにk-1個) ・・・ (1)このまま地道に数えていくのも一つの方法ですが、いずれにしてもn!にある5の個数(Nとします)が1000以上となるnをまず調べてみましょう。
n!に含まれる5kの倍数の個数をNkとします。
Nk=[n/5k] (ただし、[x]は、xの整数部分を表す)
と表されます。56=15625となるので、55の倍数までを数えればいいことが分かります。
上図で横方向に数えていけば、
N=N1+N2+N3+N4+N5
となります。これは、縦方向に数えていくと、
N=(N1−N2)×1+(N2−N3)×2+(N3−N4)×3+(N4−N5)×4+N5×5
=N1+N2+N3+N4+N5
となることからも分かります。Nk≒n/5k(誤差は1より小)なので、
N≒n/51+n/52+n/53+n/54+n/55+
≒n/51×1/(1−1/5)
=n/4よって、N≧1000となるのは、n≒1000×4=4000と分かります。
さて、n=4000のとき、
N1=[4000/5]=800、N2=[4000/25]=160、N3=[4000/125]=32、
N4=[4000/625]=6、N3=[4000/3125]=1
より、N=800+160+32+6+1=999個また、n=4005のとき、
N1=[4005/5]=801、N2=[4005/25]=160、N3=[4005/125]=32、
N4=[4005/625]=6、N3=[4005/3125]=1
より、N=801+160+32+6+1=1000個となります。さて、(1)より、1000までの整数で5の累計個数とならないものの個数をn'とすると、
n'=(N2−N3)×1+(N3−N4)×2+(N4−N5)×3+N5×4
=N2+N3+N4+N5
=160+32+6+1
=199個
と求まります。これは、1000までに現れる5の累計個数のパターンが、N1=801個ということから、
n'=N−N1=1000−801=199個
とも計算できます。答: 199個
以上
(その他の解法)
- プログラムで求める ・・・ kasamaさん、ハラギャーテイさん、有無相生さん、 他