鸡兔同笼问题:已知鸡和兔的总数量为n,总整数为m,输入n和m,依次输出鸡的数目和兔的数目。如果无解,则输出No answer。
分析:可设鸡与兔的数目分别为x、y,则a+b=n,2a+4b=m,联立求解。因为鸡与兔的腿数分别为2、4,故总腿数m为偶数。因此判断No answer的条件为(m为奇数 或 x<0 或 y<0),其它情况则有唯一解。
源代码:
#include <stdio.h>
int main()
{
int x,y; //x为鸡的数目,y为兔的数目
int n,m; //n为鸡兔总数量,m为总腿数
while(scanf("%d %d",&n,&m)!=EOF)
{
x=(4*n-m)/2; //2*x+4*y=m, x+y=n 联立求解
y=(m-2*n)/2;
if(m%2==1 || x<0 || y<0) //总腿数为奇数或解出的鸡兔数目有为负的,则无解
printf("No answer\n");
else
printf("%d %d\n",x,y);
}
return 0;
}
程序截图: