poj1012 约瑟夫环

来源:互联网 发布:淘宝商品模板 编辑:程序博客网 时间:2024/05/06 23:03

纠结。。。。

不想写思路了,看这个博客的吧。

http://hi.baidu.com/c4pt0r/blog/item/a3bdd0514f77852642a75b9f.html

贴代码:

#include <iostream>using namespace std;#define K 15int k;bool solve(int m){    int p = 1, rest = 2 * k;while(true){p = (p + m - 1) % rest;if(p == 0) p = rest;if(p <= k) return false;rest--;if(rest == k) break;}return true;}int main(){int ans[K], i, j, m;bool flag;memset(ans, 0, sizeof(ans));while(scanf("%d", &k) && k){if(ans[k]) { printf("%d\n", ans[k]); continue; }flag = false;        for(i = 0; !flag ; i++){for(j = k + 1; j <= 2 * k && !flag; j++){m = 2 * k * i + j;if(solve(m)) { flag = true;ans[k] = m;}}}printf("%d\n", ans[k]);}return 0;}