栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

蓝桥杯—买不到的数目(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯—买不到的数目(Java)

一、题目

资源限制

时间限制:1.0s 内存限制:256.0MB

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

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

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

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

输入格式

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

  要求输出:
  一个正整数,表示最大不能买到的糖数

  例如:
  用户输入:
  4 7
  程序应该输出:
  17

  再例如:
  用户输入:
  3 5
  程序应该输出:
  7




  资源约定:
  峰值内存消耗 < 64M
  CPU消耗 < 3000ms

二、代码
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class C201309买不到的数目 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        int max = a * b;
        Set ss = new HashSet<>();
        //从0开始枚举到max
        for (int x = 0; a * x < max; x++) {
            for (int y = 0; a * x + b * y < max; y++) {
                ss.add(a * x + b * y);//用不小于0的x和y与系数能组合出来的数加入set中
            }
        }
        for (int i = max - 1; i >= 0; i--) {
            if (!ss.contains(i)) {//查找第一个不在set中的值
                System.out.println(i);
                break;
            }
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号