您的位置:首页 > 其它

PKU 1012 Joseph

2008-07-11 18:01 387 查看
#include <iostream>

#define MAXK 14

using namespace std;

bool check(int n, int k)

{

int all = n * 2, w = k % all;

for (int i = 1; i < n; i++)

{

all--;

if (--w < 0)

w = all;

w = (w + k) % all;

if (w <= n && w > 0)

return false;

}

return true;

}

int main()

{

int m[MAXK];

int i, j, k;

for (i = 1; i < MAXK; i++)

for (j = i + 1; ; j += (j % i == 0) ? i + 1 : 1)

if (check(i, j))

{

m[i] = j;

break;

}

while (scanf("%d", &k) && k)

printf("%d\n", m[k]);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: