zoukankan      html  css  js  c++  java
  • 历届试题 买不到的数目

    题目

    问题描述

    小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。

    小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。

    你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。

    本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。

    输入格式

    两个正整数,表示每种包装中糖的颗数(都不多于1000)

    输出格式

    一个正整数,表示最大不能买到的糖数

    样例输入1

    4 7

    样例输出1

    17

    样例输入2

    3 5

    样例输出2

    7


    思路:

    最开始找不着上界,写了个dfs,33分。
    然后上界用 两个数的最小公倍数(其实开始用的两数乘,后来想了下。。。)
    完全背包里 从 最小公倍数-1 倒着找就出来了。


    代码

    import java.util.*;
    import java.math.*;
    import java.util.regex.*;
    
    
    public class Main {
    
        final static int INF = 0x3f3f3f3f;
        final static int NUM = 1002;
    
        static int gcd(int a,int b) {
            int t;
            while(b!=0) { 
                t=a%b;a=b;b=t;
            }
            return a; 
        }
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
    
            int[] a=new int[2];
            while(sc.hasNext()) {
                a[0]=sc.nextInt();a[1]=sc.nextInt();
                int maxn=a[0]*a[1]/gcd(a[0],a[1]);
                int[] f=new int[maxn];
                TreeSet<Integer> ts=new TreeSet<Integer>();
                for(int i=0;i<2;i++) {
                    for(int j=a[i];j<f.length;j++) {
                        f[j]=Math.max(f[j], f[j-a[i]]+a[i]);
                        ts.add(f[j]);
                    }
                }
    
                int ans=maxn-1;
                for(int i=0;i<NUM;i++) {
                    if(!ts.contains(ans))break;
                    ans--;
                }
                System.out.println(ans);
            }
    
        }
    }
    
    
  • 相关阅读:
    游戏开发热门技术浅析
    SpringMVC文件分片上传,断点续传
    浏览器文件分片上传,断点续传
    网页文件分片上传,断点续传
    Web文件分片上传,断点续传
    JavaScript文件分片上传,断点续传
    js文件分片上传,断点续传
    html5文件分片上传,断点续传
    vue文件分片上传,断点续传
    csharp文件分片上传,断点续传
  • 原文地址:https://www.cnblogs.com/wygdove/p/4542095.html
Copyright © 2011-2022 走看看