洛谷 B4203:[常州市赛 2021] 鸡羊同栏 ← 枚举法

​【题目来源】
https://www.luogu.com.cn/problem/B4203

【题目描述】
小 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​​​​​​​

【数据范围】
对于所有数据,0≤A,B,C,D≤10^9。

【算法分析】
设鸡总数 a,兔子总数 b,总角数 c,总腿数 d。
情形一:变异个体为鸡
(1)变异的鸡的角数:总角数减去全部兔子的角数,即 c-2b。
(2)变异的鸡的腿数:总腿数减去全部兔子的腿数、减去其余 a-1 只未变异的鸡的腿数,即 d-2(a-1)-4b=d-2a-4b+2。
情形二:变异个体为羊
(1)变异的羊的角数:总角数减去其余 b-1 只未变异的羊的角数,c-2(b-1)=c-2b+2。
(2)变异的羊的腿数:总腿数减去全部鸡的腿数、减去其余 b-1 只未变异的羊的腿数,d-2a-4(b-1)=d-2a-4b+4。

【算法代码】

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a,b,c,d;
    cin>>a>>b>>c>>d;
    int ji_jiao=c-2*b, ji_tui=d-2*a-4*b+2;
    int yang_jiao=c-2*b+2, yang_tui=d-2*a-4*b+4;

    if(ji_jiao<0 || ji_tui<0) cout<<-1<<endl;
    else cout<<ji_jiao<<" "<<ji_tui<<endl;

    if(yang_jiao<0 || yang_tui<0) cout<<-1;
    else cout<<yang_jiao<<" "<<yang_tui;

    return 0;
}

/*
in:
2 2 3 15

out:
-1
1 7
*/



【参考文献】
https://www.luogu.com.cn/problem/solution/B4203

​

posted @ 2026-11-03 06:43  Triwa  阅读(3)  评论(0)    收藏  举报