結果
| 問題 |
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;
}