题目:鸡兔同笼
已知鸡和兔的总数量为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;
}
示例
总结
此题较为简单,运用数学知识先解二元一次方程,再赋值,值得注意的是,当总腿数不为偶数时和最后鸡兔数小于零时要打印“No answer”。