本文最后更新于 2455 天前,其中的信息可能已经有所发展或是发生改变。
内容纲要
题意
略
题解
排列组合题
有$A^m_k$种排列方法,n个位置放k种球有${n-1}\choose{k-1}$种方案
所以答案是
$\displaystyle\sum_{k=1}^{min(n-1,m)}A^m_k {{n-1}\choose{k-1}}$
AC代码
#include<bits/stdc++.h>
#define LL long long
#define MAXN 1000010
#define MOD 998244353
using namespace std;
LL qpow(LL a,LL b)
{
LL res=1;
while(b)
{
if(b&1) res=res*a%MOD;
a=a*a%MOD;
b>>=1;
}
return res;
}
LL n,m;
LL inv[MAXN];
int main()
{
inv[0]=inv[1]=1;
int T,kase=0;
scanf("%d",&T);
for(int i=2;i<MAXN;++i) inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;
while(T--)
{
scanf("%lld%lld",&n,&m);
LL ans=m%MOD,sum=m%MOD;
LL m1=m%MOD,n1=n%MOD;
for(int i=1;i<n && i<m;++i)
{
sum=sum*(m1-i)%MOD*(n1-i)%MOD*inv[i]%MOD;
ans=(ans+sum)%MOD;
}
while(ans<0) ans+=MOD;
printf("Case #%d: %lld\n",++kase,ans);
}
}