2021 年百度之星·程序设计大赛 - 复赛 1002 Add or Multiply 1(第2类斯特林数)
Posted 小哈里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021 年百度之星·程序设计大赛 - 复赛 1002 Add or Multiply 1(第2类斯特林数)相关的知识,希望对你有一定的参考价值。
problem
solution
- 想到了是n个小球放到m个盒子里以后,剩下的就是板子了
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 3010;
const int mod = 1e9+7;
LL fac[maxn];
LL init(){ fac[0] = 1; for(int i = 1; i < maxn; i++)fac[i]=fac[i-1]*i%mod; return 0ll;}
LL st[maxn][maxn];
LL init2(){st[0][0]=1; for(int i = 1; i < maxn; i++)for(int j = 1; j <= i; j++)st[i][j]=(st[i-1][j-1]+1ll*j*st[i-1][j]%mod)%mod; return 0ll;}
int main(){
init(); init2();
int T; cin>>T;
while(T--){
int n, m; cin>>n>>m;
LL ans = 0;
for(int i=1; i<=n &&i<=m; i++)ans=(ans+2ll*st[n][i]*st[m][i]%mod*fac[i]%mod*fac[i]%mod)%mod;
for(int i=1; i+1<=n &&i<=m;i++)ans=(ans+1ll*st[n][i+1]%mod*st[m][i]%mod*fac[i+1]%mod*fac[i]%mod)%mod;
for(int i=1; i+1<=m &&i<=n;i++)ans=(ans+1ll*st[m][i+1]%mod*st[n][i]%mod*fac[i+1]%mod*fac[i]%mod)%mod;
cout<<ans<<"\\n";
}
return 0;
}
以上是关于2021 年百度之星·程序设计大赛 - 复赛 1002 Add or Multiply 1(第2类斯特林数)的主要内容,如果未能解决你的问题,请参考以下文章