[蓝桥杯][2013年第四届真题]买不到的数目

转载思路
①输入两个数,算作a,b

②题目中说到:最大不能买到的数量,也就是肯定在 a*b 之前的数字

③使一个数从 a*b开始向下寻找,最大嘛,找到一个就是那个最大的、符合要求的数字了

④在数字查找的循环再嵌套一次循环和判断

⑤令“要找的数字” - “a、b其中一个数 的 倍数”再判断是否能够除尽a、b另一个数,以此方法来来记录 “要找的数字”其中是否能够用a和b组合出来。并做记录。

⑥如果其中能够有包含的项,则继续循环向下寻找,如果找到”令输入的两个数字无法组合的“那么这个就是最大的数字了,也就是要找的那个数字

package 算法练习;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class 买不到的数目 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		//输入的两个数字
		int a=in.nextInt();
		int b=in.nextInt();
		int max=a*b;
		//利用式子ax+by
		int x_max=1000;
		int y_max=1000;
		//ans
		int ans=0;
		List list=new ArrayList(); 
		 for(int i=0;i<x_max;i++)
				{
			 for(int j=0;j<y_max;j++)
				
				{
					int cen=a*i+b*j;
					list.add(cen);
				}
				}
//		 System.out.println(list);
		 for(int o=max;o>0;o--)
		 {
			 if(!list.contains(o))
			 {
				 ans=o;
				 break;
			 }
		 }
		 System.out.println(ans);
	}

}

方法

我这里关于x_max和y_max,直接取值为1000。一个玄学的方法,到时候比赛中也可以这样确定。如果不确定怎么取值,直接取一个比较大的值,进行循环就好
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值