#include <bits/stdc++.h>
using namespace std;
#define int int64_t
constexpr int MOD = 1e9 + 7;
signed main() {
cin.tie(0)->sync_with_stdio(0);
int p, t;
cin >> p >> t;
vector<vector<vector<int>>> dp(301,
vector<vector<int>>(610, vector<int>(610, 0)));
dp[0][0][0] = 1;
for (int i = 1; i <= 300; i++) {
for (int j = 0; j < 610; j++) {
for (int k = j; k < 610; k++) {
if (j + 2 < 610 && k + 1 < 610)
dp[i][j][k] += dp[i - 1][j + 2][k + 1];
if (j == 0 && k + 1 < 610) {
dp[i][j][k] += dp[i - 1][j + 1][k + 1];
dp[i][j][k] += dp[i - 1][j][k + 1];
}
if (j - 1 >= 0 && k - 2 >= 0)
dp[i][j][k] += dp[i - 1][j - 1][k - 2];
dp[i][j][k] %= MOD;
}
}
}
while (t--) {
int n;
cin >> n;
int ans = 0;
for (int i = 0; i < 610; i++)
ans += dp[n][0][i];
ans %= MOD;
cout << ans << '\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |