题目如下:
解题思路:
首先会想到一个二元一次方程,在方程上的一组(x,y)就是满足小易购买标准的两种包装的各自袋数;
程序实现:
我这里用的是两层循环,判断是否满足那个等式即可,突然想到,可以用一层循环,在内部进行减法运算,得到另一种包装苹果的袋数,若为整数,则进行计算得到总袋数,若不是整数,则不满足条件,一会儿我再改进一下;
计算完成之后呢,就是判断了,判断size是否变过,变过的话就说明有解决方案,那输出最终结果就好了,否则,输出-1;
=========================================代码===================================================
方法一,两层循环:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
/*小易想购买的苹果个数*/
int num = in.nextInt();
int i=0,size = 0,beforesize = 0,result = 0,flag=0;
for (i=0;i<=16;i++){
for (int j=0;j<=12;j++){
if (num==(6*i+8*j)){
flag++;
size=i+j;
if (flag>1) {
if (size < beforesize) {
result = size;
}
}else {
result=size;
}
beforesize=i+j;
}
}
}
if (result==0) {
System.out.println(-1);
}else {
System.out.println(result);
}
}
}
方法二 ,一层循环,一层判断:
import java.util.Scanner;
public class Main4 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
/*小易想购买的苹果个数*/
int num = in.nextInt();
int i=0;
int size = 0;
int beforesize = 0;
int result = 0;
int flag=0;
for (i=0;i<=16;i++){
int j=num-6*i;
if (j<0){}else {
if (j%8==0){
flag++;
size=i+j/8;
if (flag>1) {
if (size < beforesize) {
result = size;
}
}else {
result=size;
}
beforesize=i+j/8;
}
}}
if (result==0) {
System.out.println(-1);
}else {
System.out.println(result);
}
}
}