我是靠谱客的博主 正直大山,最近开发中收集的这篇文章主要介绍2021年常州市“信息与未来”程序设计小能手比赛试题--鸡羊同栏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

        昨天由于上下午都是课,晚上还不得不跟着去购物,所以断更了一天。从今天起,继续更新!


:本文文件名为animal。

题目描述

        小X是CZ市知名的牧主。他把A只鸡和B只羊圈养在一个围栏中。

        一只正常的鸡有0只角,2条腿;一只正常的羊有2只角,4条腿。

        每一天,一道神秘的宇宙射线击中了牧场,导致其中的至多一个动物发生了变异。

        变异的动物角和腿的数量至少有一个变化了。例如,一只正常的鸡变异成了3条角2条腿。注意:变异之后动物也不可能拥有负数个数的腿或角。

        小X只知道鸡和羊的数量,以及笼子里的动物一共有C只角D条腿。他想请你搞清楚变异的情况是什么。

输入

        一行四个正整数A,B,C,D,含义见问题描述。

输出

        输出共两行。

        第一行:如果是一只鸡变异了,输出它变异后角和腿的条数,否则输出-1。

        第二行:如果是一只羊变异了,输出它变异后角和腿的条数,否则输出-1。

样例组

样例1
输入 2 2 3 15
输出
-1
1 7

样例2
输入 2 2 4 12
输出
-1
-1

数据范围

关于60%的数据,0<=A,B,C,D<=1000;

关于100%的数据,0<=A,B,C,D<=10^9。


题目思路

        从题目解析中的“笼子里”四个字中可以这道这是一道鸡兔同笼的题目。我们可以用if语句来判断条件是否成立。程序很快就能写出来了:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a,b,c,d,x,y;
	cin>>a>>b>>c>>d;
	x=2*b,y=2*a+4*b;
	if(c-x>=0&&d-y+2>=0) cout<<c-x<<' '<<d-y+2<<endl;
	else	cout<<-1<<endl;
	if(c-x+2>=0&&d-y+4>=0) cout<<c-x+2<<' '<<d-y+4;
	else cout<<-1;
    return 0;
}

        可是这样做只有70分,而且还过不了样例二。那该怎么办呢?

        我们可以再在if语句中加上特判,再定义一个变量f表示特判是否成立,同时判鸡变异语句加上a>0,判羊变异的语句加上b>0,(一只也没有无法变异),这样的话样例二就能过了。


题目标程

        题目标程如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a,b,c,d,x,y,f=1;
	cin>>a>>b>>c>>d;
	x=2*b,y=2*a+4*b;
	if(x==c&&y==d) f=0;
	if(a>0&&f>0&&c-x>=0&&d-y+2>=0) cout<<c-x<<' '<<d-y+2<<endl;
	else	cout<<-1<<endl;
	if(b>0&&f>0&&c-x+2>=0&&d-y+4>=0) cout<<c-x+2<<' '<<d-y+4;
	else cout<<-1;
    return 0;
}

        这道题目就这么多。

最后

以上就是正直大山为你收集整理的2021年常州市“信息与未来”程序设计小能手比赛试题--鸡羊同栏的全部内容,希望文章能够帮你解决2021年常州市“信息与未来”程序设计小能手比赛试题--鸡羊同栏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部