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;    
 } 

 

转载于:https://www.cnblogs.com/Oswald/p/7429626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值