提出 #5074666
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
const int64_t MOD = 998244353;
void add(int64_t& a, int64_t b){
a = (a+b) % MOD;
}
void mul(int64_t& a, int64_t b){
a = (a*b) % MOD;
}
vector<int64_t> fact, seq_inv, fact_inv;
void create_fact_mod(int num){
fact[0] = 1;
fact[1] = 1;
for(int i=2; i<=num; i++){
fact[i] = fact[i-1] * i % MOD;
}
}
void create_seq_inv_mod(int num){
seq_inv[0] = 1;
seq_inv[1] = 1;
for(int i=2; i<=num; i++){
seq_inv[i] = (MOD - MOD/i) * seq_inv[MOD%i] % MOD;
}
}
void create_fact_inv_mod(int num){
fact_inv[0] = 1;
fact_inv[1] = 1;
for(int i=2; i<=num; i++){
fact_inv[i] = fact_inv[i-1] * seq_inv[i] % MOD;
}
}
void create_mod_tables(int num){
fact.resize(num+1);
seq_inv.resize(num+1);
fact_inv.resize(num+1);
create_fact_mod(num);
create_seq_inv_mod(num);
create_fact_inv_mod(num);
}
int64_t comb_mod(int n, int k){
return fact[n] * fact_inv[n-k] % MOD * fact_inv[k] % MOD;
}
int64_t perm_mod(int n, int k){
return fact[n] * fact_inv[n-k] % MOD;
}
int main(){
int N, X;
cin >> N >> X;
create_mod_tables(6010);
static int64_t dp[3001][6010], dp2[3001][6010];
dp[0][0] = 1;
dp2[0][0] = 1;
for(int i=0; i<N; i++) for(int j=0; j<=2*N; j++){
for(int k=0; k<=2; k++) add(dp[i+1][j+k], dp[i][j]);
for(int k=1; k<=2; k++) add(dp2[i+1][j+k], dp2[i][j]);
}
int64_t ans = 0;
for(int j=0; j<X; j++) add(ans, dp[N][j]);
for(int y=1; X+y<=2*N; y+=2){
if(y+1 < X-1){
for(int n=1; n+y+1<=N; n++){
int64_t result = dp2[n][X-y-2];
mul(result, comb_mod(N, n+y+1));
add(ans, result);
}
}else{
if(X%2) add(ans, comb_mod(N, (X+y)/2));
}
}
cout << ans << endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Banned X |
| ユーザ | betrue12 |
| 言語 | C++14 (GCC 5.4.1) |
| 得点 | 800 |
| コード長 | 1964 Byte |
| 結果 | AC |
| 実行時間 | 241 ms |
| メモリ | 282112 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 800 / 800 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | s1.txt, s2.txt, s3.txt, s4.txt, s5.txt |
| All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, s1.txt, s2.txt, s3.txt, s4.txt, s5.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 01.txt | AC | 218 ms | 282112 KiB |
| 02.txt | AC | 218 ms | 282112 KiB |
| 03.txt | AC | 150 ms | 215040 KiB |
| 04.txt | AC | 207 ms | 252160 KiB |
| 05.txt | AC | 239 ms | 268672 KiB |
| 06.txt | AC | 241 ms | 268672 KiB |
| 07.txt | AC | 213 ms | 254208 KiB |
| 08.txt | AC | 224 ms | 274816 KiB |
| 09.txt | AC | 223 ms | 281728 KiB |
| 10.txt | AC | 159 ms | 215040 KiB |
| 11.txt | AC | 2 ms | 2432 KiB |
| 12.txt | AC | 2 ms | 2432 KiB |
| 13.txt | AC | 2 ms | 2432 KiB |
| 14.txt | AC | 2 ms | 2432 KiB |
| 15.txt | AC | 2 ms | 2432 KiB |
| 16.txt | AC | 218 ms | 282112 KiB |
| 17.txt | AC | 220 ms | 281216 KiB |
| 18.txt | AC | 211 ms | 276864 KiB |
| 19.txt | AC | 218 ms | 282112 KiB |
| 20.txt | AC | 33 ms | 87168 KiB |
| s1.txt | AC | 2 ms | 2432 KiB |
| s2.txt | AC | 2 ms | 2432 KiB |
| s3.txt | AC | 2 ms | 4480 KiB |
| s4.txt | AC | 2 ms | 4480 KiB |
| s5.txt | AC | 10 ms | 33536 KiB |