0455 - ホゲナッチ数列

時間制限 1 秒 / メモリ制限 512 MB / 得点 10 / Writer root / x 3 / 統計 /


TLE
1sec
MLE
512MB
得点
10

ストーリー

思いつかなかった...><

問題

  • A1=a
  • A2=b
  • An = (An-1 + An-2) Mod 10007
で表される数列Aがある.
nAn が与えられた時, An 未満の a, b の組み合わせの通り数 p を求めよ.

入力

n
An

1 行目に整数 n が与えられる.

2 行目に整数 An が与えられる.

出力

An = (An-1 + An-2) Mod 10007 を満たす An 未満の a, b の組み合わせの通り数 p を求めよ.
出力の最後に改行を入れること.
※なお,a = bの時は重複して通り数に数えない.

制約

制約は以下のとおりである.

  • 0 ≦ An < 10007(=104+7)
  • 0 ≦ a, b < An
  • 3 ≦ n ≦ 100000000(=108)

入出力例

入力例1

10
55

出力例1

1

解説

An = {1, 1, 2, 3, 5, 8, 13, 21, 34, 55}

上記の数列のみが考えられる.
a = bなので重複して通り数に数えない事に注意.


入力例2

3
3

出力例2

2

解説

An = {1, 2, 3}

An = {2, 1, 3}

上記の2通りが考えられる.


入力例3

100000000
10006

出力例3

10005

  • 工夫して計算すれば誰でも解けるはず(一応数学強い人なら解けるはず)
  • 制限時間厳しめかもしれないのでC/C++推奨(ei1333が爆速で通してた.)
  • 実はこの問題はあるアルゴリズムの典型問題らしい(全く想定していなかった)