鸽兔(鸡兔)同笼不用循环

鸽兔(鸡兔)同笼不用循环

题目描述

童心未泯的redraiment经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。一点也不像大学生,还是一副老不正经的样子,呵呵。
随着鸽子和兔子数目的增多,redraiment带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的,redraiment决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食物。一、二、三、四、五...他开始数了。
现在,他已经知道有这些鸽子和兔子一共有n个头和m只脚。请你帮他写个程序计算一下一共有多少只鸽子和兔子。 

输入

输入包括多组数据。
每行包括2个数据:n、m(代表上面题目中提到的意思1≤n, m≤230)。
n、m都是整数。

输出

每组数据的输出都只有一行,分别是鸽子的数量和兔子数量。
如果输入的测试数据不能求得结果,那肯定是redraiment这个马大哈数错了,就输出"Error"提示他。

样例输入

35 94
1 3

样例输出

23 12
Error
思路:这道题数据较大,所以用循环肯定超限。其实这个比鸡兔同笼更简单,鸡和鸽子的头知道有多少个,如果脚的数量少于鸡的二倍肯定是Error,大于兔的四倍也是Error,脚的数量是单数也是Error。剩下的就是可以求出结果的了。
  让我们想一下,脚的数量-鸡和兔子的头数乘以2=兔子的数量的二倍。因为开始的时候把兔子的脚也按两只计算,所以剩下的肯定是兔子没算的两只脚,除以2就是兔子的数量。
#include<stdio.h>
int main()
{
    long long int n,m,h,x,y;n:总头数 m:总脚数 x=及的个数 y=兔子的个数 h=剩余的脚
    while(~scanf("%lld%lld",&n,&m))
    {
        if(2*n>m||m%2!=0||4*n<m)printf("Error\n");判断是否能得到答案
        else
        {
            h=m-2*n;
            y=h/2;
            x=n-y;
            printf("%lld %lld\n",x,y);
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值