买不到的数目

买不到的数目

题目

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

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

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

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

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

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

样例输入1
4 7
样例输出1
17
样例输入2
3 5
样例输出2
7

这个是用殴几里得的思想,但是不是java语言,我看的不是很懂

在这里插入图片描述
https://blog.csdn.net/u010579068/article/details/44873361?ops_request_misc=%7B%22request%5Fid%22%3A%22158353795419725219900422%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158353795419725219900422&biz_id=0&utm_source=distribute.pc_search_result.none-task
在这里插入图片描述

这个是用背包思想,但是语言是c++,我看不懂,但讲的还蛮好的

https://blog.csdn.net/qq_43271202/article/details/102919843?ops_request_misc=%7B%22request%5Fid%22%3A%22158353795419725219900422%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158353795419725219900422&biz_id=0&utm_source=distribute.pc_search_result.none-task

用数学方法得出

证明的方法:
在这里插入图片描述

import java.util.Scanner;

public class Main{
	public static void main(String[]	args){
		Scanner sc=new Scanner(System.in);
		int a=sc.nextInt();
		int b=sc.nextInt();
		System.out.println(a*b-a-b);
	}
}

代码

import java.util.Scanner;

public class 买不到的数目 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        //动态规划法,他是每一层慢慢叠加,制作一个二维数组,之后一个个来看能不能实现
        boolean[] p=new boolean[a*a+b*b+1];//但是怎么建立的一维数组,
        //一维数组,长度为a*a+b*b+1
        //还有一个问题,为什么非要b再试a呢?我一转换就不对了
        //因为a*b就是最小公倍数
        for(int i=0;i<=b;i++){
        	for(int j=0;j<=a;j++)
        		p[i*a+b*j]=true;//p可以买到的数量,即i从0开始,到i=a
        }
        for(int i=p.length-1;i>=0;i--){//因为要求最大,所以从最后面开始遍历,如果出现false,就为所求值
        	if(p[i]==false&&i<=a*b){//其实我就是不懂为什么要是a*b,这是最小公倍数(应该是,在一般情况下?
        	//为什么要小于等于最小公倍数?如果等于最小公倍数,则说明,我的两个袋糖果都可以直接等于这个数值,而不能等于的要比他小	
        	//这也有点不能说出理由,因为你怎么知道我能不能往上面写呢?
        		System.out.println(i);
        		return;
        	}
        }
	}
}
在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
发出的红包

打赏作者

向上Claire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值