AcWing 1487. 取硬币
原题链接
简单
作者:
三鹤亥一
,
2025-04-03 20:53:51
· 山东
,
所有人可见
,
阅读 2
N = 110
M = 100010
mod = int(1e9 + 7)
p = [0] * N
f = [[0] * M for i in range(N)]
n1, n2, m = map(int, input().split())
row = list(map(int, input().split()))
for i in range(1, n1 + 1):
p[i] = row[i - 1]
row = list(map(int, input().split()))
for i in range(n1 + 1, n1 + n2 + 1):
p[i] = row[i - n1 - 1]
for i in range(n1 + n2 + 1):
f[i][0] = 1
for i in range(1, n1 + 1):
for j in range(m + 1):
if j >= p[i]:
f[i][j] = (f[i - 1][j] + f[i][j - p[i]]) % mod
else:
f[i][j] = f[i - 1][j]
for i in range(n1 + 1, n1 + n2 + 1):
for j in range(m + 1):
if j >= p[i]:
f[i][j] = (f[i - 1][j] + f[i - 1][j - p[i]]) % mod
else:
f[i][j] = f[i - 1][j]
print(f[n1 + n2][m])