QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#387201 | #6736. Alice and Bob | k1nsom | TL | 0ms | 0kb | C++17 | 1.1kb | 2024-04-12 09:15:29 | 2024-04-12 09:15:29 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define N 10000005
#define endl '\n'
#define mod 998244353
int n, ans, col, jc[N + 5] = {0}, inv[N + 5] = {0};
int kpow(int x, int k)
{
int n = x, ret = 1;
while (k)
{
if (k & 1)
ret = (ret * n) % mod;
n = (n * n) % mod;
k >>= 1;
}
return ret;
}
void init()
{
jc[0] = 1;
for (int i = 1; i <= N; i++)
jc[i] = (i * jc[i - 1]) % mod;
inv[1] = 1;
inv[0] = 0;
for (int i = 2; i <= N; i++)
inv[i] = kpow(jc[i], mod - 2);
}
signed main()
{
cin >> n;
col = 1;
init();
for (int i = 1; 2 * i <= n + 1; i++)
{
// cout << n - i << ' ' << n - 2 * i + 1 << ' ' << i - 1 << endl;
if (i - 1 == 0 || n + 1 == 2 * i)
ans = (ans + jc[i - 1] * jc[n - i] % mod) % mod;
else
ans = (ans + jc[n - i] * inv[n - 2 * i + 1] % mod * inv[i - 1] % mod * jc[i - 1] % mod * jc[n - i] % mod) % mod; // col(n - i, i - 1)
}
cout << ans << endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
1
output:
1