![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.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 }