提交时间:2024-11-14 21:33:06

运行 ID: 34835

#include<bits/stdc++.h> using namespace std; #define ll long long const ll N=1e5+10,M=998244353; int t,n,m; ll jc[N<<1],ny[N<<1]; ll ksm(ll a,ll b){ ll ans=1; while(b>0){ if(b&1)ans=ans*a%M; a=a*a%M;b>>=1; }return ans; } signed main(){ scanf("%d",&t); jc[0]=1;ny[0]=1; for(int i=1;i<=N*2-5;i++){jc[i]=jc[i-1]*i%M;ny[i]=ksm(jc[i],M-2);} while(t--){ scanf("%d%d",&n,&m); ll ans=0; for(int k=1;k<=n/m;k++){ // cout<<"!"<<k<<" "<<n-k*m+2*k<<" "<<2*k<<" "; ll res=jc[n-k*m+2*k]*ny[n-k*m]%M*ny[2*k]%M;//cout<<res<<endl; ll forb; if(n-k*m<k)forb=0; else {forb=jc[n-k*m+k]*ny[n-k*m-k]%M*ny[2*k]%M;} // cout<<forb<<endl; ans+=(res-forb+M)%M;ans%=M; } printf("%lld\n",ans); } return 0; }