| 比赛 | 
    CSP2023-S模拟赛 | 
    评测结果 | 
    AAAAAAAAAAAAAAAAAAAA | 
    | 题目名称 | 
    Maximized Combos | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    YunQian | 
    运行时间 | 
    0.493 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.99 MiB  | 
    | 提交时间 | 
    2023-10-17 20:20:33 | 
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read(){
	int x=0,f=1;char c=getchar();
	for(;(c<'0'||c>'9');c=getchar()){if(c=='-')f=-1;}
	for(;(c>='0'&&c<='9');c=getchar())x=x*10+(c&15);
	return x*f;
}
const int mod=998244353;
int ksm(int x,int y,int p=mod){
	int ans=1;
	for(int i=y;i;i>>=1,x=1ll*x*x%p)if(i&1)ans=1ll*ans*x%p;
	return ans%p;
}
int inv(int x,int p=mod){return ksm(x,p-2,p)%p;}
mt19937 rnd(time(0));
int randint(int l,int r){return rnd()%(r-l+1)+l;}
void add(int &x,int v){x+=v;if(x>=mod)x-=mod;}
void Mod(int &x){if(x>=mod)x-=mod;}
void Assert(bool c,int L=0){if(!c){cout<<"Assertion Failed at "<<L<<endl;exit(0);}}
void cmax(int &x,int v){x=max(x,v);}
void cmin(int &x,int v){x=min(x,v);}
const int N=2e5+5;
int fac[N],ifac[N],n,m;
void init(int V){
    fac[0]=1;for(int i=1;i<=V;i++)fac[i]=1ll*fac[i-1]*i%mod;
    ifac[V]=inv(fac[V])%mod;for(int i=V-1;i>=0;i--)ifac[i]=1ll*ifac[i+1]*(i+1)%mod;
}
int C(int x,int y){
    if(x<y)return 0;
    return 1ll*fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
signed main(void){
	freopen("combos.in","r",stdin);
	freopen("combos.out","w",stdout);
	n=read(),m=read();init(N-5);
	
	vector<int>ans(m+1);
	for(int s=1;s<=m;s++){
		for(int k=0;k<=n-m+1&&k*(s+1)<=n;k++){
			if(k&1)add(ans[s],mod-1ll*C(n-m+1,k)*C(n-k*(s+1),n-m)%mod);
			else add(ans[s],1ll*C(n-m+1,k)*C(n-k*(s+1),n-m)%mod);
		}
	}
	for(int s=m;s>=1;s--)add(ans[s],mod-ans[s-1]);
	for(int s=1;s<=m;s++)cout<<ans[s]<<'\n';
	return 0;
}