算法入门经典 例题 1-4(鸡兔同笼)

题目

鸡和兔总数量为 n,总腿数为 m。输入 n 和 m,依次输出鸡的数目和兔的数目。若无解,那么输出 No answer。

解答

这里开始上难度,但是鸡兔同笼是小学学的。。。

定义变量 j、t,分别表示鸡的数量、兔子的数量。

先来写出两个关系式:

  • j + t = n
  • 2j + 4t = m

代入消元

  • t = (m-2n)/2

所以

  • j = n – t

并且,我们也要考虑,输入的 m、n 必须为正整数。

那么,我们可以写出以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;

int main()
{
/*
n:总数量
m:总腿数
j:鸡数量
t:兔数量
*/
int m,n,j,t;
cin >> n >> m;

t = (m - 2 * n) / 2;
j = n - t;

if (m % 2 != 0 || m < 2 * n || m > 4 * n)
{
cout << "No answer";
}
else
{
cout << j << " " << t;
}

return 0;
}

整体难度也不高。

祝各位读者早日成为神牛牪犇!