C/C++算法竞赛入门经典Page9 例题1-4 鸡兔同笼

题目:鸡和兔总数:n,总腿数:m.输入n,m,输出鸡和兔分别的数量;无解则输出"No answer"

样例输出1:

14 32

样例输出1:

12 2

样例输入2:

10 16

样例输出2:

No answer

 

首先,声明两个变量n,m对应总数和总腿数;再声明两个变量为鸡和兔各自的数量a,b

1 int n,m,a,b;

输入n,m:

scanf("%d%d",&n,&m);

通过联立方程组:

a+b=n

2a+4b=m

得:

a=(4n-m)/2;

b=n-a;

判断是否无解:

1.总腿数m不能为奇数

2.a>=0

3.b>=0

则:

if(m%2==1||a<0||b<0)
    printf("No answer");

如果有解,则输出a,b:

else
    printf("%d %d",a,b);

完整代码:

//P9 例1-4鸡兔同笼
#include <cstdio>

int n,m;//n:总数量 m:总腿数 

int main()
{
    int a,b;//a:鸡的数量 b:兔的数量
    
    scanf("%d%d",&n,&m);//输入总数量n和总腿数m 
    
    a=(4*n-m)/2;//联立方程组2a+4b=m和a+b=n 
    b=n-a;
    
    if(m%2==1||a<0||b<0)//总腿数不能是奇数且鸡和兔的数量都不能是负数 
        printf("No Answer");
    else
        printf("%d %d",a,b);
    
    return 0;    
 } 

 

posted @ 2017-08-25 20:48  AbelIvan7  阅读(583)  评论(0编辑  收藏  举报