代码写得很清楚了,直接上代码把
Python代码
for _ in range(int(input())):
n, k = map(int, input().split())
d = [[0] * (k + 1) for _ in range(n + 1)]
d[0][0] = 1
d[1][0] = 1
d[2][0] = 2
for i in range(3, n + 1):
for j in range(k + 1):
if k == 0:
d[i][j] = d[i - 1][0] + d[i - 2][0] + d[i - 3][0]
elif j == 0:
d[i][j] = d[i - 1][0] + d[i - 1][1] + d[i - 2][0] + d[i - 2][1]
elif j == k:
d[i][j] = d[i - 3][0]
else:
d[i][j] = d[i - 1][j + 1] + d[i - 2][j + 1]
d[i][j] %= 100007
ans = 0
for j in range(0, k + 1):
ans = (ans + d[n][j]) % 100007
print(ans)