【基础算法】鸡兔同笼问题

244 阅读2分钟

🌹作者:云小逸
📝个人主页:云小逸的主页
📝Github:云小逸的Github
🤟motto:要敢于一个人默默的面对自己,==强大自己才是核心==。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟 👏专栏:C++👏 👏专栏:Java语言👏👏专栏:Linux学习👏
👏专栏:C语言初阶👏👏专栏:数据结构👏👏专栏:备战蓝桥杯👏

@TOC


前言

今天我们继续学习算法,加油。这篇文章写的是鸡兔同笼问题。希望这篇可以有幸帮助到你,码字不易,请多多支持。 在这里插入图片描述

——————————————————————————————

AcWing 3473. 鸡兔同笼 题解

题目描述

nn 只鸡和兔同在一个笼子里,从上面数下来,有 mm 只脚,问鸡和兔分别有多少只。

输入格式

共一行,包含两个整数 nnmm,用空格隔开。

输出格式

如果无解,则输出 No answer

否则在一行内,先输出鸡的只数,再输出兔的只数。如果有多组解,输出其中任意一组即可。

数据范围

0n,m1060≤n,m≤10^6

样例

输入样例1:

1 3

输出样例1:

No answer

输入样例2:

5 14

输出样例2:

9 1

题解

这道题我们可以先来分析一下。

设鸡和兔的数量分别为 xxyy,则有:

  • x+y=nx + y = n
  • 2x+4y=m2x + 4y = m

通过上面的两个等式,我们可以解出:

x=4nm2x = \frac{4n - m}{2}

y=m2n2y = \frac{m - 2n}{2}

这里需要注意的是,xxyy 的数量都必须为正整数。

因此,我们需要判断 4nm4n - mm2nm - 2n 是否都为偶数,以及是否大于等于 0。

如果不满足条件,那么就无解,输出 No answer

否则,输出 xxyy 即可。

代码实现

C++ 代码如下:

下面是完整的C++代码:

#include <iostream>

using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;

    int x = (4 * n - m) / 2;
    int y = (m - 2 * n) / 2;

    if ((m % 2 != 0) || (x < 0) || (y < 0))
    {
        cout << "No answer" << endl;
    }
    else
    {
        cout << x << " " << y << endl;
    }

    return 0;
}

我们首先读入 nnmm,然后按照上面的公式计算 xxyy

如果 mm 是奇数,或者 xxyy 小于 0,那么就无解,输出 No answer

否则,输出 xxyy 即可。

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.把时间尺度拉长,拉长十年看当下

2.不说负面情绪,只描述事实;

3.越专注于过好自己,能量和幸运越会照顾你; 只解决问题,不做没有意义的担心,输了就认;

4.学会原谅自己,要允许自己做错事,允许自己出现情绪波动,我知道你已经很努力很努力在做好了

5.所有你害怕的、想逃避的事情,最终都要面对,既然这样不如选择坦然面对。即使结果不如人愿,没关系,至少这个过程是享受的,而不是一路带着恐惧和害怕。

最后如果觉得我写的还不错,请不要忘记==点赞==✌,==收藏==✌,加==关注==✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!