QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#762397 | #8023. The Journey of Geor Autumn | lin1991122 | WA | 1ms | 7876kb | C++14 | 790b | 2024-11-19 14:53:01 | 2024-11-19 14:53:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using ui=unsigned int;
using ull=unsigned long long;
const int P=998244353;
const int N=1e7+3;
void add(ui &x,ui y){if((x+=y)>=P)x-=P;}
ui inv[N],f[N],g[N];
int n,K;
int main(){
int u,v,w,x,y,z;
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>K;
if(K==n){ui ans=1;for(ui i=1;i<=n;++i)ans=(ull)ans*i%P;printf("%u\n",ans);return 0;}
inv[1]=1;ui ans=0;
for(int i=2;i<=n;++i)inv[i]=(ull)inv[P%i]*(P-P/i)%P;
f[0]=inv[n];
for(int i=1;i<n;++i){
ui k=f[i-1];
if(i-K-1>=0)k=(k+P-f[i-K-1])%P;
k=(ull)k*inv[n-i]%P;
if(i+K>=n)add(ans,k);
f[i]=(f[i-1]+k)%P;
}
for(ui i=1;i<=n;++i)ans=(ull)ans*i%P;
printf("%u\n",ans);
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3772kb
input:
1 1
output:
1
result:
ok "1"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 7876kb
input:
1 2
output:
0
result:
wrong answer 1st words differ - expected: '1', found: '0'