hdu 1085 有num1个 1 ,num2个 2 ,num3个 5 (母函数)
2015-09-23 00:06
316 查看
有num1个 1 ,num2个 2 ,num3个 5
问它们不能组成的最小正整数是谁
样例的母函数 (1+X)(1+X2)(1+X5+X10+X15)
展开后 X4的系数为0
Sample Input
1 1 3
0 0 0
Sample Output
4
# include <iostream> # include <cstdio> # include <cstring> # include <algorithm> # include <string> # include <cmath> # include <queue> # include <list> # define LL long long using namespace std ; int c1[10010], c2[10010] ; int w[4] = {0 , 1 , 2 , 5}; int num[5]; int main() { //freopen("in.txt","r",stdin) ; int n ; while(scanf("%d %d %d", &num[1], &num[2], &num[3])!= EOF ) { if (num[1] == 0 && num[2] == 0 && num[3] == 0) break ; int Max = num[1]*w[1]+num[2]*w[2]+num[3]*w[3]; memset(c1, 0, sizeof(c1)); memset(c2, 0, sizeof(c2)); int i , j , k ; for(i=0; i<=w[1]*num[1]; i+=w[1]) c1[i] = 1; int len = w[1]*num[1]; for(i=2; i<=3; ++i) { for(j=0; j<=len; ++j) for(k=0; k<=w[i]*num[i]; k+=w[i]) { c2[k+j] += c1[j]; } len += w[i]*num[i]; for(j=0; j<=len; ++j) { c1[j] = c2[j]; c2[j] = 0; } } for(i=0; i<=Max; ++i) if(c1[i] == 0) { printf("%d\n", i); break; } if(i == Max+1) printf("%d\n", i); } return 0; }View Code
相关文章推荐
- 国外 程序员的十个等级,看看你是那个等级?
- 对象树和拥有权
- Linux命令备忘实例(13)——文件操作
- 使用Spring Mail发送QQ邮件
- Oracle Report Viewer 以及如何查看Oracle 报表
- 国内 程序员的十个等级 你属于哪个等级
- 第一次个人作业
- github page 和 hexo 搭建在线博客
- test
- C语言条件编译及编译预处理阶段
- 1002 Mission Impossible 6 (2015年北京赛区网络赛B题)
- 大数据学习篇:hadoop深入浅出系列之HDFS(三) ——HDFS读文件和写文件
- 信息安全系统设计基础第一周学习总结
- 创建者模式
- 研究发现微软 OneDrive 上存储的恶意软件突然大幅增加
- Linux中使用expect脚本实现远程机器自动登录
- JSP使用Servlet作为控制器实现MVC模式实例详解
- JSP使用JDBC完成动态验证及采用MVC完成数据查询的方法
- jsp中checkbox用法详解
- 匹配 IP 地址与域名的正则表达式