您的位置:首页 > 其它

hdu_4651_Partition(公式)

2016-05-18 23:11 363 查看

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4651

题意:给你一个数n,让你输出将n拆分的方案数。

题解:公式题,不解释,当模版记住就行

#include <cstdio>
#include <cstring>
#define LL long long
const LL mod=1000000007;
LL p[100010];
void init(){
p[0]=p[1]=1,p[2]=2,p[3]=3;
for(int i=4; i<=100000;i++){
int fg=1;p[i]=0;
for(int j=1;; ++j){
int a=(j*j*3+j)/2,b=(j*j*3-j)/2;
if(b>i&&a>i)break;
if(a<=i)p[i]=(p[i]+p[i-a]*fg+mod)%mod;
if(b<=i)p[i]=(p[i]+p[i-b]*fg+mod)%mod;
fg=(-1)*fg;
}
}
}
int main(){
init();
int t,n;
scanf("%d",&t);
while(t--)scanf("%d",&n),printf("%I64d\n",p
);
return 0;
}
View Code

 



 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: