您的位置:首页 > 其它

UVA 305 - Joseph(模拟)

2014-08-03 15:52 971 查看


UVA 305 - Joseph

题目链接

题意:前k个好人,后k个坏人,排成一个环,现在给一个步数m,按照约瑟夫环问题去走,保证杀光坏人,不杀到好人,求最小的m

思路:k最多14,直接枚举步数模拟即可

代码:

#include <cstdio>
#include <cstring>

int k, ans[15];

bool judge(int num, int k) {
int now = 0;
for (int i = num * 2; i > num; i--) {
now = (now - 1 + k) % i;
if (now < num) return false;
}
return true;
}

int solve(int k) {
for (int i = k + 1; ;i++) {
if (judge(k, i))
return i;
}
return -1;
}

int main() {
for (int i = 1; i < 14; i++)
ans[i] = solve(i);
while (~scanf("%d", &k) && k) {
printf("%d\n", ans[k]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: