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类斯特林数)的主要内容,如果未能解决你的问题,请参考以下文章

2019 年百度之星·程序设计大赛 - 复赛

2018“百度之星”程序设计大赛 - 复赛

2018 “百度之星”程序设计大赛 - 复赛

2022百度之星程序设计大赛 - 复赛 1001 子序列

2022百度之星程序设计大赛 - 复赛 1001 子序列

2022百度之星程序设计大赛 - 复赛 1003 最大值