2018年江苏省信息与未来小学生编程思维展示活动试题--(新)鸡兔同笼

题目描述

        有三种动物分别被关在笼子里,它们分别是鸡,兔子和三脚猫。

        每只鸡有一个头,两只脚;每只三脚猫有一个头,三只脚;每只兔子有一个头,四只脚。现在这道笼子里一共有X个头,Y只脚,但这个消息不足以推导出鸡,兔和三脚猫的准确数量。这时候就需要编程来帮忙了——请你求出笼子里分别至少,至多有多少只兔子

输入

        你需要在一个测试数据中处理多个鸡兔同笼问题。输入第一行T表示问题的数量。

        接下来T行,每行两个用空格分隔的正整数X,Y表示头和脚的数量。

输出

        对于每个问题,输出一行两个空格分隔的整数,表示笼子里至少和至多有几只兔子。输入数据保证每个问题至少有一种鸡,三脚猫和兔子的合法组合。

数据范围

对于50%的数据,1<=x<=10^6。

对于100%的数据,1<=X,Y<=10^9,1<=T<=20。

题目思路

        和鸡羊同栏(链接在评论区)一样,这道题目也是一道鸡兔同笼类型的题目。但是,这里多了一个三脚猫。那该怎么办呢?

        我们可以分最多和最少两种情况来写。既然要兔子最少,那么三脚猫就要最多。那么如果三脚猫脚的总只数大于等于头的三倍,那么就可以直接输零。否则输出总脚数减去头数的三倍。

        如果要兔子最多的话,如果我们可以先设每个都是鸡,然后脚数比头的两倍大的数量除二就是最多的数量(如果脚数比头的两倍大的数量不能被而整除,那么就增加一只三脚猫。

        最后前面在输入T,再套个循环就可以了。

        题目主程序如下:

void cx(int t)
{
    int x,y;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>y;
        if(y<=x*3) cout<<0<<' ';
        else cout<<y-x*3<<' ';
        if(y<=x*2) cout<<0<<endl;
        else cout<<(y-x*2)/2<<endl;
    }
}

题目标程

题目标程如下:

#include<bits/stdc++.h>
using namespace std;
int t,x,y;
int main()
{
    cin>>t;	
    for(int i=1;i<=t;i++)
    {
    	cin>>x>>y;
    	if(y<=x*3)  cout<<0<<' ';
    	else  cout<<y-x*3<<' ';
    	if(y<=x*2)  cout<<0<<endl;
    	else  cout<<(y-x*2)/2<<endl;
	}
	return 0;
}

这道题目就这么多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值