还是期望大佬
初看有点难入手,但你发现总方案数是固定的,于是我们考虑算期望
首先,如果一个人的
这公式的含义是确定
于是我们固定了
故这部分的期望:
综上:
于是答案为:
可以
贴代码。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1000010,mod=998244353;
int T,jc[N],inv[N],n,k,ans;
int C(int x,int y){return jc[x]*inv[y]%mod*inv[x-y]%mod;}
void add(int &x,int y){if((x+=y)>=mod)x-=mod;}
int ksm(int x,int k){
int ans=1;
while(k){
if(k&1)ans=ans*x%mod;
x=x*x%mod,k>>=1;
}
return ans;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
jc[0]=jc[1]=inv[0]=inv[1]=1;
for(int i=2;i<N;i++)jc[i]=jc[i-1]*i%mod,inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for(int i=2;i<N;i++)inv[i]=inv[i-1]*inv[i]%mod;
cin>>T;
while(T--){
cin>>n>>k,ans=0;
for(int r=0;r<=k;r++)
add(ans,C(k,r)*C(n-k,k-r)%mod*ksm(C(n,k),mod-2)%mod*r%mod*(n-2*k)%mod*ksm(n-2*k+r,mod-2)%mod);
cout<<ans*jc[n]%mod*jc[n]%mod<<'\n';
}
return 0;
}