Pythonで理解する蟻本「2-3 分割数」(p.66)
この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の
「2-3 分割数」(p.66)
のコードをPythonで書き直したものとなっています。
入力
入力例
4 3
10000
解答
MAX_N = 1000
MAX_M = 1000
# 入力
n, m = map(int,input().split())
M = int(input())
dp = [[0] * (MAX_N + 1) for _ in range(MAX_M + 1)] # DPテーブル
dp[0][0] = 1
for i in range(1, m + 1):
for j in range(n + 1):
if j - i >= 0:
dp[i][j] = (dp[i - 1][j] + dp[i][j - i]) % M
else:
dp[i][j] = dp[i - 1][j]
print(dp[m][n])