题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2643
学习了一下第二类斯特林数,写个水题测测板子
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=105;
const int MOD=20090126;
int s[MAXN][MAXN];
int fac[MAXN];
void init()
{
memset(s,0,sizeof(s));
fac[0]=1;
for(int i=1;i<MAXN;i++)
fac[i]=1LL*fac[i-1]*i%MOD;
s[0][0]=1;
for(int i=1;i<MAXN;i++)
for(int j=1;j<=i;j++)
s[i][j]=(s[i-1][j-1]+1LL*j*s[i-1][j]%MOD)%MOD;
}
void solve()
{
int n;
ll ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
ans=(ans+1LL*s[n][i]*fac[i]%MOD)%MOD;
}
printf("%lld\n",ans);
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
init();
int T;
scanf("%d",&T);
while(T--)
{
solve();
}
return 0;
}