結果
| 問題 |
No.137 貯金箱の焦り
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-10-02 15:29:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 744 bytes |
| コンパイル時間 | 310 ms |
| コンパイル使用メモリ | 82,104 KB |
| 実行使用メモリ | 151,816 KB |
| 最終ジャッジ日時 | 2024-12-25 06:17:22 |
| 合計ジャッジ時間 | 83,187 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 TLE * 13 |
ソースコード
MOD = 1234567891
def multiply(A, B):
n = len(A)
m = len(B)
C = [0] * (n + m - 1)
for i, a in enumerate(A):
for j, b in enumerate(B):
C[i + j] += a * b
C[i + j] %= MOD
return C
# [x ^ n] P(x) / Q(x)
def BostanMori(P, Q, n):
while n:
R = [(x * (-1) ** (i % 2)) % MOD for i, x in enumerate(Q)]
Q = multiply(Q, R)[::2]
P = multiply(P, R)[n % 2::2]
n >>= 1
return P[0] * pow(Q[0], MOD - 2, MOD) % MOD
n, m = map(int, input().split())
A = list(map(int, input().split()))
tot = sum(A)
dp = [0] * (tot + 1)
dp[0] = 1
for a in A:
for i in range(tot, a - 1, -1):
dp[i] -= dp[i - a]
dp[i] %= MOD
ans = BostanMori([1], dp, m)
print(ans)