比赛 组合计数1 评测结果 AEEEEEEEEA
题目名称 方案数 最终得分 20
用户昵称 xuyuqing 运行时间 1.212 s
代码语言 C++ 内存使用 4.50 MiB
提交时间 2026-02-26 11:06:56
显示代码纯文本

#include <cstdio>
#include <iostream>

using namespace std;

const int N = 114;
const long long Mod = 998244353;

int x;
int y;
int z;
long long dp[N][N][N];
int n;
bool flag[N][N][N];

int main () {
    
    freopen ("problema.in", "r", stdin);
    freopen ("problema.out", "w", stdout);
    
    cin >> x >> y >> z;
    cin >> n;
    int a, b, c;
    for (int i = 1; i <= n; i++) {
        cin >> a >> b >> c;
        flag[a][b][c] = true;
    }
    dp[0][0][0] = 1;
    for (int i = 0; i <= x; i++) {
        for (int j = 0; j <= y; j++) {
            for (int k = 0; k <= z; k++) {
                if (flag[i][j][k]) {
                    continue;
                }
                
                for (int t = i - 1; t >= 0;) {
                    t &= i;
                    dp[i][j][k] += dp[t][j][k];
                    dp[i][j][k] %= Mod;
                    t--;
                }
                for (int t = j - 1; t >= 0;) {
                    t &= j;
                    dp[i][j][k] += dp[i][t][k];
                    dp[i][j][k] %= Mod;
                    t--;
                }
                for (int t = k - 1; t >= 0;) {
                    t &= k;
                    dp[i][j][k] += dp[i][j][t];
                    dp[i][j][k] %= Mod;
                    t--;
                }
            }
        }
    }
    
    cout << dp[x][y][z] << endl;
    
    return 0;
}