QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#409700 | #6736. Alice and Bob | asoulcoming# | TL | 0ms | 0kb | C++20 | 1.3kb | 2024-05-12 16:02:08 | 2024-05-12 16:02:09 |
answer
#include<bits/stdc++.h>
#define int long long
#define lowbit(x) x&(-x)
#define endl '\n'
using namespace std;
const int N=1e7+6;
const int mod=998244353;
typedef pair<int,int>PII;
int a[N],f[N],fact[N],infact[N];
int qmi(int a, int k, int p) // 快速幂模板
{
int res = 1;
while (k)
{
if (k & 1) res =res * a % p;
a = a * a % p;
k >>= 1;
}
return res;
}
int C(int n,int m){
if(n<0||m<0)return 0;
if(m>n)return 0;
return ((fact[n]%mod*infact[m])%mod*infact[n-m]%mod)%mod;
}
void init()
{
fact[0] = infact[0] = 1;
for (int i = 1; i <N; i ++ )
{
fact[i] = fact[i - 1] * i % mod;
infact[i] = infact[i - 1] * qmi(i, mod - 2, mod) % mod;
}
}
void solve()
{
// int n=1;
// while(n<=11)
// {
// for(int i=1;i<=n;i++)a[i]=i;
// int ans=0;
// do{
// int flag=0;
// // for(int i=1;i<=10;i++)cout<<a[i]<<" ";cout<<endl;
// for(int i=1;i<=a[1];i++)
// {
// if(a[i]<a[1])flag=1;
// }
// if(!flag)ans++;
// }while(next_permutation(a+1,a+1+n));
// cout<<ans<<endl;
// n++;
// }
int n;
cin>>n;
int ans=fact[n-1];
for(int i=2;i<=n;i++)
{
ans=(ans+C(n-i,i-1)*fact[i-1]%mod*fact[n-i]%mod)%mod;
}
cout<<ans<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t=1;
init();
// cin>>t;
while(t--)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
1
output:
1