简单,求降级
2025-05-24 19:51:26
发布于:浙江
29阅读
0回复
0点赞
#include <iostream>
#include <vector>
const int MOD = 998244353;
int solve(const std::vector<int>& cards) {
int n = cards.size();
std::vector<std::vector<std::vector<int>>> dp(n + 1, std::vector<std::vector<int>>(3, std::vector<int>(7, 0)));
dp[0][0][0] = 1;
for (int i = 1; i <= n; ++i) {
int num = cards[i - 1];
int remainder3 = num % 3;
int remainder7 = num % 7;
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 7; ++k) {
dp[i][j][k] = dp[i - 1][j][k];
int newJ = (j - remainder3 + 3) % 3;
int newK = (k - remainder7 + 7) % 7;
dp[i][j][k] = (dp[i][j][k] + dp[i - 1][newJ][newK]) % MOD;
}
}
}
return dp[n][0][0];
}
int main() {
int n;
std::cin >> n;
std::vector<int> cards(n);
for (int i = 0; i < n; ++i) {
std::cin >> cards[i];
}
int result = solve(cards);
std::cout << result << std::endl;
return 0;
}
全部评论 1
666眼都不代言了
2025-05-25 来自 北京
1
有帮助,赞一个