結果
問題 |
No.1189 Sum is XOR
|
ユーザー |
|
提出日時 | 2020-09-05 10:00:43 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 21 ms / 2,000 ms |
コード長 | 835 bytes |
コンパイル時間 | 2,336 ms |
コンパイル使用メモリ | 199,608 KB |
最終ジャッジ日時 | 2025-01-14 07:02:08 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i=0; i<(int)(n); i++) const long long MOD = 998244353; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; vector<int> cnt(1024); REP (i, n) { int a; cin >> a; ++cnt[a]; } if (k > 10) { cout << 0 << endl; return 0; } vector<vector<long long> > dp(11, vector<long long>(1024)); dp[0][0] = 1; for (int a = 1; a < 1024; a++) { for (int mask = 0; mask < 1024; mask++) { if ((mask & a) != a) continue; for (int i = 0; i < 10; i++) { dp[i+1][mask] += dp[i][mask^a] * cnt[a] % MOD; dp[i+1][mask] %= MOD; } } } long long ret = 0; for (int mask = 0; mask < 1024; mask++) (ret += dp[k][mask]) %= MOD; cout << ret << endl; return 0; }