B3754 [信息与未来 2019] 鸡兔同笼
chen_zhe
·
·
题解
欢迎报名洛谷网校,期待和大家一起进步!
本题考察数学、方程组。
我们可以令鸡的数量为 a、三脚猫的数量为 b、兔子的数量为 c。题目给出两个方程:
a+b+c=x\\
2a+3b+4c=y
\end{cases}
我们可以消去 a。令 a=x-b-c,代入第二个方程得到
2(x-b-c)+3b+4c=y
化简后,
2x-2b-2c+3b+4c=y \quad\Longrightarrow\quad 2x+b+2c=y
即 b=y-2x-2c。
同时,由于 a= x-b-c = x-(y-2x-2c)-c = 3x-y+c,为了保证 a\ge0 和 b\ge0(动物数量不能为负),我们必须有:
另外,c 本身也必须非负,所以综合起来:
c\ge \max(0,\, y-3x) \quad \text{且} \quad c\le \frac{y-2x}{2}
因此,所有满足条件的兔子数量的取值范围为:
\text{下界} = \max(0,\, y-3x) \qquad \text{上界} = \left\lfloor \frac{y-2x}{2} \right\rfloor
参考代码:
// 下界:保证 a >= 0
long long low = max(0LL, y - 3 * x);
// 上界:保证 b >= 0
long long high = (y - 2 * x) / 2;
cout << low << " " << high << "\n";