标签:http io ar for 问题 sp 代码 c amp
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2512
题目涉及到了用第二类斯特灵数;
何谓用第二类斯特灵数:
S(P,K)=S(P-1,K-1)+K*S(P-1,K);表示P个元素放入K个不可区分的集合中而且集合不为空的划分个数。
那么问题的解为sigma(S(P,i)) (P=>i>=1) 这个和称为bell数。
Bell数是将P个元素集合分到非空且不可区分例子的划分个数。详见组合数学
题目大意可为 : 将N张卡分成若干个集合,集合不为空,有多少种分法。
我的AC代码
#include<stdio.h>
__int64 a[2005][2005];
int main(void)
{
int i,j;
for(i=1; i<=2000; i++)
{
for(j=1; j<=i; j++)
{
if(i==j)
a[i][j]=1;
else if(j==1)
a[i][j]=1;
else
a[i][j]=(a[i-1][j-1]%1000+j*a[i-1][j]%1000)%1000;
}
}
__int64 n,s;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%I64d",&n);
s=0;
for(i=1; i<=n; i++)
s=(s+a[n][i])%1000;
printf("%I64d\n",s);
}
return 0;
}
标签:http io ar for 问题 sp 代码 c amp
原文地址:http://www.cnblogs.com/liudehao/p/3964065.html