题意
给你k,用m个0到n-1的数字构成k的方案数
题解
代码
#include<bits/stdc++.h>
#define N 200005
#define P pair<int,int>
using namespace std;
typedef long long ll;
const int M=998244353;
const int inf=1e9+7;
ll pre[N],inv[N];
ll quick(ll a,ll b)
{
ll c=1;
while(b){
if(b&1)c=c*a%M;
a=a*a%M;
b>>=1;
}
return c;
}
ll C(int n,int m)
{
return pre[n]*inv[n-m]%M*inv[m]%M;
}
int main()
{
pre[0]=inv[0]=1;
for(int i=1;i<N;i++){
pre[i]=pre[i-1]*i%M;
inv[i]=quick(pre[i],M-2);
}
int t;
ll n,m,k;
for(scanf("%d",&t);t;t--)
{
scanf("%lld%lld%lld",&n,&m,&k);
if((n-1)*m<k){
puts("0");
continue;
}
ll ans=0,f=1;
for(int i=0;i<=k/n;i++){
ans+=C(m,i)*C(m-1+k-n*i,m-1)%M*f;
ans%=M;
f=-f;
}
printf("%lld\n",(ans+M)%M);
}
return 0;
}