买不到的数目

买不到的数目

问题描述
小明开了一家糖果店。他别出心裁:把水果糖包成 4 颗一包和 7 颗一包的两种。糖果不能拆
包卖。
小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比
如要买 10 颗糖。
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是 17。大于 17 的任何
数字都可以用 4 和 7 组合出来。
本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。
输入格式
两个正整数,表示每种包装中糖的颗数(都不多于 1000)
输出格式
一个正整数,表示最大不能买到的糖数

样例输入 1
4 7
样例输出 1
17

样例输入 2
3 5
样例输出 2
7
解题思路:

要找到一个最大不能买到的数量,那这个数量的上限 n 怎么求?

感谢 zhb1nk 的解题思路https://blog.csdn.net/zhaohaibo_/article/details/79544497?ops_request_misc=%7B%22request%5Fid%22%3A%22162836020616780261925848%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=162836020616780261925848&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-79544497.first_rank_v2_pc_rank_v29&utm_term=买不到的数目&spm=1018.2226.3001.4187

看了上面这篇文章之后可以知道,这个数量的上限 n 是输入的两个数 a、b 的最小公倍数
不会求最小公倍数的可以看我之前的文章:
核桃的数量https://blog.csdn.net/qq_56650499/article/details/119190044

代码实现
import java.util.Scanner;

public class AmountCannotBuy {

    //求最大公约数
    public static int gcd(int a, int b) {
        return a % b == 0 ? b : gcd(b, a % b);
    }

    //不能买到的数目
    public static int cannotBuy(int a, int b) {
        int n = a * b / gcd(a, b); //a、b 的最小公倍数
        int temp = n;
        while (temp > 0) {
            if (temp % a == 0 || temp % b == 0)
                temp = --n;
            else
                temp -= a;
        }
        return n;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        System.out.println(cannotBuy(a,b));
    }
}
运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,使用pandas库时,如果找不到指定的列名有几种可能的原因和解决办法。 1. 输入错误:首先检查是否正确输入了列名。列名应该与数据集中的列名完全匹配,包括大小写。可以使用`df.columns`属性查看数据集中的所有列名,确保没有输入错误。 2. 列名不存在:如果不存在指定的列名,可能是因为该列名实际上不在数据集中。可以使用`df.columns`属性查看所有列名,确保列名存在。此外,还可以使用`df.info()`查看数据集的信息,包括所有列名和每列的非空值数目。 3. 列名包含空格或特殊字符:如果指定的列名包含空格或特殊字符(如符号或中文字符),在使用列名时需要额外注意。一种解决办法是使用方括号`[]`来选择列,例如`df['列名']`。另一种解决办法是重命名列名,将其修改为不包含特殊字符的格式,例如使用下划线替换空格。 4. 数据类型不匹配:如果指定的列名存在,但是在使用时仍然出现问题,可能是因为列的数据类型与预期不符。例如,指定列的数据类型为整数,但是实际上是字符串。可以使用`df.dtypes`属性查看每列的数据类型,并确保与预期一致。 5. 数据集为空:如果数据集是空的,即没有任何行或列,那么任何列名都将无法找到。可以使用`df.empty`来检查数据集是否为空。在这种情况下,需要确认数据集是否正确加载,或者重新加载数据集。 总之,在处理pandas中找不到指定列名时,应该先确认输入是否正确,然后检查列名是否存在,是否包含特殊字符,数据类型是否匹配,以及数据集是否为空。通过逐步排查和调试,可以找到并解决找不到指定列名的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值