Problem p02979 - Generation 2

Orig Description

Score : 1600 points
Problem StatementThere is a blackboard on which all integers from -10^{18} through 10^{18} are written, each of them appearing once. Takahashi will repeat the following sequence of operations any number of times he likes, possibly zero:
Choose an integer between 1 and N (inclusive) that is written on the blackboard. Let x be the chosen integer, and erase x.
If x-2 is not written on the blackboard, write x-2 on the blackboard.
If x+K is not written on the blackboard, write x+K on the blackboard.
Find the number of possible sets of integers written on the blackboard after some number of operations, modulo M.
We consider two sets different when there exists an integer contained in only one of the sets.
Constraints
1 \leq K\leq N \leq 150
10^8\leq M\leq 10^9
N, K, and M are integers.
InputInput is given from Standard Input in the following format:
N K M
OutputPrint the number of possible sets of integers written on the blackboard after some number of operations, modulo M.
Sample Input 13 1 998244353
Sample Output 17
Every set containing all integers less than 1, all integers greater than 3, and at least one of the three integers 1, 2, and 3 satisfies the condition. There are seven such sets.
Sample Input 26 3 998244353
Sample Output 261
Sample Input 39 4 702443618
Sample Output 3312
Sample Input 417 7 208992811
Sample Output 4128832
Sample Input 5123 45 678901234
Sample Output 5256109226

Extracted Specification

An integer N (1 ≤ N ≤ 150), representing some quantity or size.
An integer K (1 ≤ K ≤ N), representing another quantity or size.
An integer M (10^8 ≤ M ≤ 10^9), representing yet another quantity or size.

### Example Input:

```
13
1
998244353
```

### Function Signature:
Write a function f(N, K, M) that takes in the input. 
def f(N: int, K: int, M: int): 
    ''' 
    N: an integer 
    K: an integer
    M: an integer
    '''

Test Case Generator

Certainly! The problem involves generating random values for \(N\), \(K\), and \(M\) while ensuring they respect the given constraints. Here's the test case generator in Python for the given problem statement:

```python
import random

def tcgen():
    # Constraints
    MIN_N_K = 1
    MAX_N_K = 150
    MIN_M = 10**8
    MAX_M = 10**9

    # Generate random values for N, K, and M within their respective ranges
    N = random.randint(MIN_N_K, MAX_N_K)
    K = random.randint(MIN_N_K, N)
    M = random.randint(MIN_M, MAX_M)

    return N, K, M

# Example usage:
if __name__ == "__main__":
    for _ in range(5):  # Generate 5 test cases
        N, K, M = tcgen()
        print(f"Generated Test Case: N={N}, K={K}, M={M}")
```

### Explanation:
1. **N and K Generation**:
   - \(N\) is generated randomly between 1 and 150.
   - \(K\) is generated randomly between 1 and \(N\). This ensures \(1 \leq K \leq N \leq 150\).

2. **M Generation**:
   - \(M\) is generated randomly between \(10^8\) and \(10^9\).

3. **Output**:
   - The generator prints out the generated test case values \(N\), \(K\), and \(M\).

This generator will produce a variety of test cases within the specified constraints, suitable for testing the competitive programming problem.

Extract Arguments

def extract_arguments(fh):
    N, K, M = map(int, fh.readline().strip().split())
    return N, K, M