某监狱有一个由n个牢房组成的大厅,每个牢房紧挨着。每个牢房里都有一个囚犯,每个牢房都是锁着的。一天晚上,狱卒感到无聊,决定玩一个游戏。在第一轮,他喝了一杯威士忌,然后跑下大厅,打开每个牢房的锁。在第二轮比赛中,他喝了一杯威士忌,然后跑下大厅,锁上每隔一个的牢房的锁(牢房2、4、6....)。在第三轮比赛中,他喝了一杯威士忌,然后跑下大厅。他每隔三个牢房(第3、6、9号牢房)就去一次。如果牢房被锁上了,他就把它打开;如果牢房门打开了,他就锁上牢房。他重复n轮,喝最后一杯,然后昏倒。一些囚犯意识到他们的牢房被解锁且狱卒丧失了行动能力。他们就可以立即逃跑。现在根据牢房数量,确定有多少囚犯越狱。
代码如下
#include <cstdio>
int n;
int match (int x) {
int tot = 0;
for (int i = 2; i <= n; i++) if (x % i == 0) tot = tot + 1;
return tot;
}
int main () {
int t;
scanf ("%d", &t);
while (t --> 0) {
int x = 1;
scanf ("%d", &n);
for (int i = 2; i <= n; i++) if (match (i) % 2 == 0) x = x + 1;
}
return 0;
}