zoukankan      html  css  js  c++  java
  • hdu 1085

    题目大意:分别输入面额为1、2、5的硬币的数量。输出这些硬币不能组成的最小金额


    解题思路:本题与1028的一个很大的区别就在于他的硬币的个数是固定。

    硬币面额1,2,5且有数量限制num1,num2,num3,问最小不能组合的数量是多少。

    G(x)=(1+x+...+x^num1)(1+x^2+...+x^2num2)(1+x^5+,,,+x^5num3),展开,系数不为0的数都是可以由硬币组合出来的。


    代码如下:

     

    /*
     * 1085_5.cpp
     *
     *  Created on: 2013年8月9日
     *      Author: Administrator
     */    章泽天是我的女神!!!女神!!!
    
    
    #include <stdio.h>
    #include <string.h>
    int maxval = 1*1000 + 2*1000 + 5*1000;
    
    int main(){
    	int n1,n2,n3;
    	bool f;
    
    	while(scanf("%d%d%d",&n1,&n2,&n3),n1||n2||n3){
    		int c1[maxval + 5],c2[maxval + 5],c3[maxval + 5];
    		int i,j,k;
    		memset(c1,0,sizeof(c1));
    		memset(c2,0,sizeof(c2));
    		memset(c3,0,sizeof(c3));
    
    		for(i = 0 ; i <= n1 ; ++i ){
    			c1[i] = 1;
    		}
    
    		for(j = 0 ; j <= n1 ; ++j){
    			for(k = 0 ; k <= 2*n2 ; k +=2){
    				c2[j+k] += c1[j];
    			}
    		}
    
    		for( j = 0 ; j <= n1 + 2*n2 ; ++j){
    			for( k = 0 ; k <= 5* n3 ; k+=5){
    				c3[j+k] += c2[j];
    			}
    		}
    
    		f = false;
    
    		for( j = 0 ; j <= n1 + 2*n2 + 5*n3 ; ++j){
    			if(c3[j] == 0){
    				printf("%d
    ",j);
    				f = true;
    				break;
    			}
    		}
    
    		if(!f){
    			printf("%d
    ",n1 + 2*n2 + 5*n3+1);
    		}
    
    	}
    }
    


  • 相关阅读:
    JSP脚本的9个内置对象
    JSP基础
    修改 MySQL Workbench editor的字体
    pb datawindow语法
    SqlServer 查询死锁,杀死死锁进程
    pb设计笔记
    sql server网络备份
    数据库设计
    各种默认回车提交表单
    jQuery选择器 (详解)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3249362.html
Copyright © 2011-2022 走看看