HDU -- 1085 Holding Bin-Laden Captive!(母函数)
2015-02-08 22:18
381 查看
题目大意:有三种硬币,1分,2分,5分,分别给出三种硬币的个数num_1,num_2,num_5,问由这些硬币不能构成的最小值是多少。
思路分析:G(x)=(1+x+x^2+...+x^num_1)(1+x^2+1+x^4+...+x^(2*num_2))(1+x^5+x^10+...+x^(5*num_5));
代码实现:
思路分析:G(x)=(1+x+x^2+...+x^num_1)(1+x^2+1+x^4+...+x^(2*num_2))(1+x^5+x^10+...+x^(5*num_5));
代码实现:
#include<stdio.h> #include<string.h> const int maxn=8050; int c1[maxn],c2[maxn]; int main(){ int coin[3]={1,2,5}; int num[4]; while(scanf("%d%d%d",&num[0],&num[1],&num[2])==3){ if(num[0]==0&&num[1]==0&&num[2]==0) break; int n=num[0]*1+num[1]*2+num[2]*5; memset(c2,0,sizeof(c2)); memset(c1,0,sizeof(c1)); for(int i=0;i<=num[0];i++){ c1[i]=1; } for(int i=2;i<=3;i++){ for(int j=0;j<=n;j++){ for(int k=0;k+j<=n&&k/coin[i-1]<=num[i-1];k+=coin[i-1])//用的硬币数量应小于等于给定的数量; c2[j+k]+=c1[j]; } for(int j=0;j<=n;j++){ c1[j]=c2[j]; c2[j]=0; } } for(int i=0;i<=n+1;i++){ if(c1[i]==0){ printf("%d\n",i); break; } } } }
相关文章推荐
- HDU 1085 Holding Bin-Laden Captive! (母函数)
- HDU 1085 Holding Bin-Laden Captive!(母函数)
- hdu 1085 Holding Bin-Laden Captive!(母函数/背包)
- hdu 1085 给出数量限制的母函数问题 Holding Bin-Laden Captive!
- HDU1085 Holding Bin-Laden Captive!(母函数,有限制的)
- HDU - 1085 Holding Bin-Laden Captive!(母函数)
- HDU 1085 Holding Bin-Laden Captive! 活捉本拉登(普通型母函数)
- hdu 1085 Holding Bin-Laden Captive!(母函数)
- 母函数 HDU 1085 Holding Bin-Laden Captive!
- HDU 1085 Holding Bin-Laden Captive! (母函数)
- hdu 1085 Holding Bin-Laden Captive!(母函数)
- HDU 1085 Holding Bin-Laden Captive!(思维,非母函数)
- Hdu 1085 Holding Bin-Laden Captive! 母函数
- HDOJ/HDU 1085 Holding Bin-Laden Captive!(非母函数求解)
- [ACM] hdu 1085 Holding Bin-Laden Captive! (母函数变形)
- HDOJ/HDU 1085 母函数 Holding Bin-Laden Captive!
- HDOJ/HDU 1085 Holding Bin-Laden Captive!(非母函数求解)
- hdu1085 Holding Bin-Laden Captive!(母函数)
- hdu 1085 Holding Bin-Laden Captive! (母函数)
- [ACM] hdu 1085 Holding Bin-Laden Captive! (母函数变形)