POJ 1012
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 bool test(int k ,int m)
6 {
7 int i, j=0;
8 int n = 2 * k;
9 for(i=0; i<k; i++)
10 {
11 //f(i+1) = (f(i) + m-1) % (n-i)
12 j=(j+m-1) % (n-i);
13
14 if(j < k)
15 {
16 return false;
17 }
18 }
19
20 return true;
21 }
22
23 int main()
24 {
25 int k;
26 int i;
27 int x[13];
28 for(k=1; k<14; k++)
29 {
30 i = k+1;
31 while(true)
32 {
33 if(test(k, i))
34 {
35 x[k-1] = i;
36 break;
37 }
38
39 if(test(k, i+1))
40 {
41 x[k-1] = i+1;
42 break;
43 }
44
45 i += (k+1);
46 }
47 }
48
49 while(cin >> k, k)
50 {
51 cout << x[k-1] << endl;
52 }
53 }
2 #include <vector>
3 using namespace std;
4
5 bool test(int k ,int m)
6 {
7 int i, j=0;
8 int n = 2 * k;
9 for(i=0; i<k; i++)
10 {
11 //f(i+1) = (f(i) + m-1) % (n-i)
12 j=(j+m-1) % (n-i);
13
14 if(j < k)
15 {
16 return false;
17 }
18 }
19
20 return true;
21 }
22
23 int main()
24 {
25 int k;
26 int i;
27 int x[13];
28 for(k=1; k<14; k++)
29 {
30 i = k+1;
31 while(true)
32 {
33 if(test(k, i))
34 {
35 x[k-1] = i;
36 break;
37 }
38
39 if(test(k, i+1))
40 {
41 x[k-1] = i+1;
42 break;
43 }
44
45 i += (k+1);
46 }
47 }
48
49 while(cin >> k, k)
50 {
51 cout << x[k-1] << endl;
52 }
53 }