【初心者歓迎】C/C++室 Ver.66【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0607599
2009/06/21(日) 14:12:23実行時間のオーダーじゃなくて演算回数のオーダーって書いてあるのがミソね
何か多倍長整数のライブラリがあって、それを使ってよいとするわけ
自分の想定解は、
- O(N): DP、メモ付き再帰
- O(log N):
- 行列の掛け算に落として行列のN乗をlog(N)ステップで求める
- 一般項から直接計算(a+b√5 の形の数の計算が必要、一般項にN乗が入ってるので演算回数はO(log N))
ちなみに、時間計算量は多倍長整数の演算のオーダーを考えにいれる必要があってめんどい
前者はNビットの数の足し算しか起こらないので O(N^2)-time,
後者は多倍長整数の乗算のオーダーに依存するが
O(N^1.585 * log N) ないし O(N^1.465 * log N) くらいにはなる
■ このスレッドは過去ログ倉庫に格納されています