[蓝蓝计算机考研算法训练二期]-day11

100 阅读1分钟

16、鸡兔同笼

已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出"No answer”(不要引号)。
输入第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)、a行里,每行都有一个n和m。(0<m,n<100)
输出输出鸡兔的个数,或者No answer

1、思路

对于每组数据,设鸡为x只,兔为y只,得:x+y=n,2 * y+4 * y=m,
消x得:y=(m-2 * n)/2,x=n-y,
则y需要为非负整数且介于0和n之间,即(m-2 * n)%2==0&&m>=2 * n&&m<=4 * n,否则无解。

2、具体实现

Java实现:

public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		int m=0,n=0,x=0,y=0;
		for (int i = 0; i < a; i++) {
			n=scanner.nextInt();
			m=scanner.nextInt();
			if((m-2*n)%2==0&&m>=2*n&&m<=4*n) {
				y=(m-2*n)/2;
				x=n-y;
				System.out.println(x+" "+y);
			}else {
				System.out.println("No answer");
			}
		}
	}

结果:
image.png