概要
実験をするなどして問題の性質を見出しましょう.
問題原案:achapi
解説
k⋅k! に注目します.
(k+1)! に形がよく似ています.
これらの差分を考えてみましょう.
(k+1)!−k⋅k!=((k+1)−k)⋅k!=k!
k⋅k!=(k+1)!−k! と分かりました.
したがって,
f(n)=1≤k≤n∑(k⋅k!)+1=1≤k≤n∑((k+1)!−k!)+1=(2!−1!)+(3!−2!)+⋯+((n+1)!−n!)+1=((n+1)!−1!)+1=(n+1)!
です.
よって「(n+1)! が 2p の倍数となる最大の p を求めよ」という問題を解けばよいです.
これはルジャンドルの定理を用いると Θ(logN) 時間で可能です.
解説:uni_kakurenbo
実装例