結果
問題 |
No.3215 Make K types-able
|
ユーザー |
|
提出日時 | 2025-07-24 06:16:50 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 893 bytes |
コンパイル時間 | 1,017 ms |
コンパイル使用メモリ | 95,784 KB |
実行使用メモリ | 77,532 KB |
最終ジャッジ日時 | 2025-07-24 22:40:45 |
合計ジャッジ時間 | 12,250 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 1 |
other | WA * 10 |
ソースコード
#include<iostream> #include<vector> #include<atcoder/modint> using namespace std; using mint = atcoder::modint998244353; int main(){ int maxN = 1000000; vector DP(maxN+1,vector<mint>(10,0)); vector<mint> power2(maxN+2,2); for(int i = 2; i <= maxN+1; i++)power2[i] = power2[i-1] * power2[i-1]; DP[2] = {5,2,1,0,0,0,0,0,0,0}; for(int i = 3; i <= maxN; i++){ DP[i][0] = power2[i-1]/2 * power2[i-1]/2 + power2[i-1]*DP[i-1][0]; for(int from1 = 0; from1 < 10; from1++){ for(int from2 = 0; from2 < 10; from2++){ if(from1 + from2 > 9)break; DP[i][from1 + from2] += DP[i-1][from1] * DP[i-1][from2]; } } } int T; cin >> T; for(int testcase = 0; testcase < T; testcase++){ int N,K; cin >> N >> K; cout << DP[N][K-1].val() << endl; } return 0; }