算法练习-day11 鸡兔同笼

204 阅读1分钟

题目:鸡兔同笼

 已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。

  • 输入
    第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)、a行里,每行都有一个n和m.(0<m,n<100)
  • 输出
    输出鸡兔的个数,或者No answer

思路

假设鸡有x只,兔子有y只,利用方程x+y=n;2x+4y=m.来求解出x,y(用n,m表示)

算法实现

#include <stdio.h>
int main()
{
	int a=0;//代表有a行数据
	scanf("%d", &a);
	
	for (int i = 0; i < a; i++)
	{
		int n = 0, m = 0;//n为鸡和兔的总数,m为两者的总腿数
		
		int x, y;//假设鸡有x只,兔子有y只
		scanf("%d%d", &n, &m);
		if (m % 2 != 0)
		{
			printf("No answer\n");
			
		}
		else 
		{
			x = (4 * n - m) / 2;
			y = n - x;
			if (x < 0 || y < 0) {
				printf("No answer");
			}
			else
				printf("鸡有%d只,兔有%d只。\n", x, y);
		}
		
	}
	return 0;
}

示例

image.png

总结

此题较为简单,运用数学知识先解二元一次方程,再赋值,值得注意的是,当总腿数不为偶数时和最后鸡兔数小于零时要打印“No answer”。