某星球存在两种生物,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();
}
}