题目描述: 鸡和兔关在一个笼子里,鸡有2只脚,兔有4只脚。输入笼子里头的总数m和脚的总数n,求鸡和兔子各有多少只?若问题无解,也要输出相应的信息。
若问题有解,依次输出鸡和兔的只数。若问题无解,则输出"No Answer"。
分析 1007 鸡兔同笼问题的进阶版,判断问题是否有解,就是判断鸡和兔子的输出结果是否为0或正整数,如果是即为有解,输出;如果为分数或负数即为无解。
一 可以利用循环,每找到一组解,循环加一,最后判断循环是否为0,循环为0即为无解。
二 直接判断求出的解是否符合条件
选用第二种方法更加简单直接
(int)c==c&&c>=0&&r>=0
//判断得出的解是否为整数,且都不为负数
//满足这一条件,输出c和r的值
(int)c!=c||c<0||r<0//同上
//满足本条件,输出"No Answer"
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
double m,n,c,r;
scanf("%lf%lf",&m,&n);
c=(4*m-n)/2;
r=(n-2*m)/2;
if ((int)c==c&&c>=0&&r>=0)
printf("%.lf %.lf\n",c,r);
else
printf("No Answer");
/*if判断也可写为
if ((int)c!=c||c<0|r<0)
printf("No Answer");
else printf("%.lf %.lf\n",c,r);*/
return 0;
}