[AGC035E] Develop
题意翻译
在黑板上写有$-10^{18}$到$10^{18}$中的所有整数,每次你可以选中一个$[ 1 , N]$中还在黑板上的整数$x$,把它擦去并补写上$x − 2$ 与 $x + K$(如果原来不存在的话)。你可以进行这个操作任意次(可以不进行),求最终黑板上数字的可能状态有多少种,答案对$M$取模。
$1\leq K \leq N \leq 150 , 10^8\leq M\leq 10^9$
题目描述
[problemUrl]: https://atcoder.jp/contests/agc035/tasks/agc035_e
黒板に $ -10^{18} $ から $ 10^{18} $ までの整数が $ 1 $ 個ずつ書かれています。高橋君は、以下の一連の操作を $ 0 $ 回以上好きなだけ繰り返します。
- 黒板に書かれている整数のうち $ 1 $ 以上 $ N $ 以下のものをひとつ選ぶ。選んだ整数を $ x $ とし、$ x $ を黒板から消す。
- 黒板に $ x-2 $ が書かれていないなら、$ x-2 $ を書き加える。
- 黒板に $ x+K $ が書かれていないなら、$ x+K $ を書き加える。
何回かの操作後、黒板に書かれている数の集合としてありうるものの個数を $ M $ で割った余りを求めてください。 ただし、$ 2 $ つの集合が異なるとは、その片方だけに現れるような整数が存在することを指します。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ K $ $ M $
输出格式
何回かの操作後、黒板に書かれている数の集合としてありうるものの個数を $ M $ で割った余りを出力せよ。
输入输出样例
输入样例 #1
3 1 998244353
输出样例 #1
7
输入样例 #2
6 3 998244353
输出样例 #2
61
输入样例 #3
9 4 702443618
输出样例 #3
312
输入样例 #4
17 7 208992811
输出样例 #4
128832
输入样例 #5
123 45 678901234
输出样例 #5
256109226
说明
### 制約
- $ 1\ \leq\ K\leq\ N\ \leq\ 150 $
- $ 10^8\leq\ M\leq\ 10^9 $
- $ N,K,M $ は整数である
### Sample Explanation 1
$ 0 $ 以下または $ 4 $ 以上の整数すべてと、$ 1,2,3 $ のうちの $ 1 $ つ以上を含むような集合すべてが条件を満たし、これは $ 7 $ 通りあります。