結果

問題 No.2846 Birthday Cake
ユーザー Ayuna
提出日時 2024-07-15 19:02:20
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,097 ms / 2,000 ms
コード長 660 bytes
コンパイル時間 219 ms
コンパイル使用メモリ 82,580 KB
実行使用メモリ 86,696 KB
最終ジャッジ日時 2024-07-15 23:23:23
合計ジャッジ時間 21,001 ms
ジャッジサーバーID
(参考情報)
judge6 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

import math

k, n = map(int, input().split())
l = 1
for i in range(1, n + 1):
    if i != 13 and i != 17 and i != 19 and i != 23:
        l = l * i // math.gcd(l, i)

dp = [[0 for _ in range(l + 1)] for _ in range(k + 1)]
# dp[i][j] = (i人目までの取り分を決めたときにその総和がjであるような分け方)
dp[0][0] = 1
for i in range(k):
    for j in range(l + 1):
        for x in range(1, n + 1):
            if l % x != 0:
                continue
            cake = l // x
            if j + cake <= l:
                dp[i + 1][j + cake] += dp[i][j]

ans = dp[k][l]
if k == 13 or k == 17 or k == 19 or k == 23:
    ans += 1
print(ans)
0