某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿。来自地球的太空船刚刚在该星球降落, 突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助宇航员分析A、B两种生物各有多少个。

package competition;

import java.util.Scanner;

/*
        某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿。来自地球的太空船刚刚在该星球降落,
        突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助宇航员分析A、B两种生物各有多少个。
        输入说明:头的数量L 腿的数量Z,(L,Z<=100000);
        输出说明:A生物的数量B生物的数量(两个整数用一个空格隔开);
        输入样例:10 32输出样例:4 2
*/
public class NumberTest {
    public static void main(String []args){
        Scanner scanner = new Scanner(System.in);
        int l = scanner.nextInt();
        int z = scanner.nextInt();
        int y = 0,x = 0;
        u1:for (x = 0; x+ (3*y) <= l;x++) {
            for (; (6 * x) + (4 * y) <= z; y++) {
                if (x + (3 * y) == l && (6 * x) + (4 * y) == z) {
                    break u1;
                }
            }
            y = 0;
        }
        if (y == 0){
            System.out.println("数据不对");
            return ;
        }
        System.out.println(x+" "+y);
    }
}

 

 

更加优化的算法:(简单清爽,引自:https://blog.csdn.net/qq_40178533/article/details/110230375)

import java.util.Scanner;
 
public class Main1 {
 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int m,n,x,y;
        m=input.nextInt();
        n=input.nextInt();
        y=(6*m-1*n)/(3*6-4*1);
        x=(n-4*y)/6;
        System.out.println(x+" "+y);
        input.close();
    }
}

posted @ 2020-12-15 23:23  蓝风c  阅读(269)  评论(0编辑  收藏  举报