n の最後にあるゼロの数を計算する効率的な方法はありますか? n!? を明示的に計算する必要はありません。
2626 次
3 に答える
5
はいあります。重要なアイデア: (1) n! を割る最大の 5 の累乗と同じです。(2) これは、n までの 5 の倍数に、n までの 25 の倍数を加え、n までの 125 の倍数を加えたものです。
しかし、これはスタック オーバーフローには属しません。
于 2011-03-22T12:34:25.460 に答える
3
N! の末尾のゼロの数 によって与えられます
∑ floor( n/5 i ) for i = 1,2,3....
C の単純なコード
i = 1, sum = 0;
while(pow(5,i)<= n)
{
sum += n/(pow(5,i));
i++;
}
于 2011-03-22T12:34:03.420 に答える
2
n! の 10 進数表現のゼロの数。は、その大きな数の因数として 10 が現れる回数です。したがって、2x5 が表示される回数です。したがって、因数として 5 よりも 2 の方がはるかに多く発生するため (なぜでしょうか?)、これは 5 が n! の因数である回数です。
あなたのインタビューの質問は次のとおりです。
1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x ... x (n-1) x n
?
于 2011-03-22T12:38:47.657 に答える