Sum of products (SPOJ 6286)
http://www.spoj.pl/problems/SUMMUL/
問題
nを二つ以上の足し算で表しその数字を掛け合わせる。そのような物を全て足すといくらになるかという問題。答えがでかくなるのでmod 1000000007を取る。
1<=n<=10^9
解放
答えの数値+nを考える。
すると
というような式になる。
この式を変形すると
という漸化式になる。
この式はフィボナッチ数と同様に
このような行列の形で書けてO(logn)で求めることができる。最後にnを引いて出力すれば良い。
関係ないがanを実際に計算すると、
という式になる。