首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

UESTC 1726 整数区划(母函数水题)

2012-09-18 
UESTC 1726 整数划分(母函数水题)转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7

UESTC 1726 整数划分(母函数水题)

转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove

题目:将整数n进行划分,要求不能有相同的数,问有多少种划分种数

http://acm.uestc.edu.cn/problem.php?pid=1726 

简单的母函数水题。

(1+x)*(1+x^2)*(1+x^3)……(1+x^n)。表示1……n最多只能取1次

最终求的是x^n的系数

#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>#include<string>#include<vector>#include<algorithm>#include<map>#include<set>#define maxn 200005#define eps 1e-8#define inf 1<<30#define LL long long#define zero(a) fabs(a)<eps#define MOD 19901014#define N 47000using namespace std;int c1[1005]={0},c2[1005]={0};int main(){c1[0]=1;c1[1]=1;for(int i=2;i<=1000;i++){for(int j=0;j<=1000;j++){c2[j]=(c2[j]+c1[j])%MOD;if(j+i<=1000)c2[j+i]=(c2[j+i]+c1[j])%MOD;}for(int j=0;j<=1000;j++){c1[j]=c2[j];c2[j]=0;}}int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);printf("%d\n",c1[n]);}return 0;}


热点排行