CF1463-A. Dungeon
题意:
你面前有三个怪物,他们分别有a, b, c点血量。现在你可以指定一个怪物,用大炮向他们射击,之后该怪物就会掉一滴血。每七次射击就会使得炮弹威力加强一次,即第7, 14, 21次射击的时候炮弹威力会被加强,加强的炮弹可以对三个怪物分别造成一点伤害。现在问你可不可能在某次被加强的炮弹发射后,使得所有的怪物血量变成0。
思路:
首先每七次射击,总共会造成9点伤害(6 + 3),因此如果要让所有怪物在某次被加强的炮弹发射后血量变为0,则需要他们的血量和为9的倍数。其次每个怪物的血量不能少于被加强的炮弹的发射个数,因为每次被加强的炮弹发射后所有的怪物血量都会减一,而血量不会不会为负数。
AC代码:
#include <cstdio>
#include <algorithm>
const int inf = 0x3f3f3f3f;
int main () {
int T, a[3];
scanf ("%d", &T);
while (T--) {
int tot = 0, minn = inf;
for (int i = 0; i < 3; i++) {
scanf ("%d", &a[i]);
tot += a[i];
minn = std::min (minn, a[i]);
}
if (minn < tot / 9 || tot % 9 != 0) {
printf ("NO\n");
} else {
printf ("YES\n");
}
}
return 0;
}