UVA 305 - Joseph(模拟)

来源:互联网 发布:淘宝上买黄金可靠吗 编辑:程序博客网 时间:2024/06/10 14:33

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;}


0 0
原创粉丝点击