概述
前言
昨天由于上下午都是课,晚上还不得不跟着去购物,所以断更了一天。从今天起,继续更新!
注:本文文件名为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年常州市“信息与未来”程序设计小能手比赛试题--鸡羊同栏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复