結果
| 問題 |
No.2846 Birthday Cake
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-08-23 23:11:45 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,004 ms / 2,000 ms |
| コード長 | 1,242 bytes |
| コンパイル時間 | 538 ms |
| コンパイル使用メモリ | 82,420 KB |
| 実行使用メモリ | 145,736 KB |
| 最終ジャッジ日時 | 2024-08-23 23:12:06 |
| 合計ジャッジ時間 | 18,272 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 |
ソースコード
from math import gcd
import sys, time, random
from collections import deque, Counter, defaultdict
def debug(*x):print('debug:',*x, file=sys.stderr)
input = lambda: sys.stdin.readline().rstrip()
ii = lambda: int(input())
mi = lambda: map(int, input().split())
li = lambda: list(mi())
inf = 2 ** 61 - 1
from fractions import Fraction
k, n = mi()
if n == 1:
print(1)
exit()
whole = 1
for i in range(1, n + 1):
whole = whole * i // gcd(whole, i)
C = [0]
for i in range(1, n + 1):
C.append(whole // i)
facs = [1] * (n + 1)
for i in range(1, n + 1):
facs[i] = facs[i - 1] * i
n1 = n
dp = [Counter() for i in range(k + 1)]
dp[0][0] = 1
for i in range(1, k + 1):
for j in range(1, n + 1, 2):
f = C[j]
for v in dp[i - 1]:
if v + f <= whole:
dp[i][v + f] += dp[i - 1][v]
dp2 = [Counter() for _ in range(k + 1)]
dp2[0][0] = 1
for i in range(1, k + 1):
for j in range(2, n + 1, 2):
f = C[j]
for v in dp2[i - 1]:
if v + f <= whole:
dp2[i][v + f] += dp2[i - 1][v]
ans = 0
for i in range(k + 1):
for v, c in dp[i].items():
ans += c * dp2[k - i][whole - v] * facs[k] // facs[i] // facs[k - i]
print(ans)