カメヲラボ

主にプログラミングとお勉強全般について書いてます

Big Number(0)

階乗の数の桁数を求める問題だが、もちろん桁数が半端じゃないので実際に階乗計算するわけにはいかない。本当は超短いコードを公開しようと思ってたのだけど、もうちょっといろんな人がやってからの方が面白いかなーと思うので一般的な解き方を説明しておく。
大きな数の桁数を求めるには、スターリングの公式を使う。
入力nに対して、
e = 2.7182818..., pi = 3.1415926...とすると、

n*log10(n)-n*log10(e)+log10(2*pi*n)/2.0+1

を四捨五入すれば通るはず。あとはこの計算式をごにょごにょして・・・。