买苹果,数学知识的重要性日益凸显

    xiaoxiao2023-09-25  162

    题目如下:

    解题思路:

    首先会想到一个二元一次方程,在方程上的一组(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); } } }

     

    最新回复(0)