题目传送门
题目大意
题目描述
有 2 × k 2 \times k 2×k 个人围成一圈, k k k 个好人站在一起, k k k 个坏人站在一起。
从第 1 1 1 个好人开始报数,接着是第 2 2 2 个好人……好人报完后才轮到坏人。第 1 1 1 个人报 1 1 1,第 2 2 2 个人报 2 2 2……第一个报 m m m 的人淘汰出圈,下一个人又报 1 1 1,再下一个人又报 2 2 2……
现请你求出最小的 m m m,使得坏人都淘汰完后才有好人被淘汰。
解题思路
这道题目是经典的约瑟夫问题,建议先做 P1145。
我们假设好人坏人都站成一排,好人的编号为 1 1 1 到 k k k,坏人的编号为 k + 1 ∼ 2 × k k+1 \sim 2\times k k+1∼2×k。
为了使坏人都在好人出局之前出局,所以 m > k m > k m>k,否则不满足题意。那么我们可以暴力枚举 m m m,再求出现在出局的人的编号,如果这个人是好人,那么现在的 m m m 不满足题意,直接跳过本次枚举。否则,就说明我们找到了最小且满足题意的数 m m m。
注意:
由于 k < 14 k<14 k<14,而询问次数并未注明,为了以防万一,我们可以先预处理出所有答案,对于每次询问,直接输出即可。
CODE:
#include <iostream>
using namespace std;
int a[20];
int main() {
for (int k = 1; k < 14; k++) {
bool flag = false;
int m = k + 1;
while (!flag) {
int now = 0, i = 0;
for (; i <= k; i++) {
if (i == k)
break;
now = (now + m - 1) % (2 * k - i);
if (now < k)
break;
}
if (i == k)
flag = true;
else
m++;
}
a[k] = m;
}
int n;
while (scanf("%d", &n) && n > 0) {
printf("%d\n", a[n]);
}
return 0;
}
总结
这道题目没有什么难度,只需要预处理一下答案即可。
乘积矩阵:
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
∏
\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod\prod
∏∏∏∏∏∏∏∏∏∏∏∏∏∏∏