鸡羊同栏
题目描述小 X 是 CZ 市著名的牧场主。他把 A 只鸡和 B 只羊圈养在一个围栏中。一只正常的鸡有 0 只角、2 条腿;一只正常的羊有 2 只角、4 条腿。某一天,一道 神秘的宇宙射线击中了牧场,导致其中的至多一个动物发生了变异。变异的动物角的只数与腿的条数中至少有一个数量变化了。例如,一只正常的鸡变异成了 3 只角 2 条腿。注意:变异以后动物也不可能有负数个数的角或腿。
小 X 只知道鸡和羊的数量、以及笼子中的动物一共有 C 只角 D 条腿。他想请你帮忙搞清楚变异的情况是什么。
输入
一行 4 个正整数 A,B,C,D,含义见问题描述。
输出
输出共 2 行。
第一行:如果可能是一只鸡变异了,输出它变异后角的只数与腿的条数;否则输出-1。 第二行:如果可能是一只羊变异了,输出它变异后角的只数与腿的条数;否则输出-1。
样例输入
2 2 3 15样例输出
-1
1 7提示提示样例1解释
只可能是一只羊变异成了 1 只角 7 条腿。(0+0+1+2=3,2+2+7+4=15)
样例输入2
2 2 4 12
样例输出2
-1
-1
样例2解释
不可能有动物变异。(0+0+2+2=4,2+2+4+4=12)
分析:可以通过A,B计算出没有变异时的角的个数X=2B,腿的个数Y=2A+4*B。因为变异必然会改变角或腿的个数,所以如果X=C并且Y=D,说明不可能有动物变异,输出-1和-1;
否则,则发生里变异,可以计算出变异的动物增加了C-X只角和D-Y条腿。
对于鸡来说,它变异后的角数是C-X,腿数是D-Y+2,所以只需要判断是否有C-X≥0,D-Y+2≥0即可。
对于羊同理,只需要判断是否有C-X+2≥0以及D-Y+4≥0即可
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int x=2*b,y=2*a+4*b,xx=c-x,yy=d-y;
if(xx==0&&yy==0){
cout<<-1<<"\n"<<-1;
return 0;
}
if(a&&xx>=0&&yy+2>=0){
cout<<xx<<" "<<yy+2<<"\n";
}
else{
cout<<-1<<"\n";
}
if(b&&xx+2>=0&&yy+4>=0){
cout<<xx+2<<" "<<yy+4<<"\n";
}
else{
cout<<-1;
}
return 0;
}