Question:http://poj.org/problem?id=1012
问题点:约瑟夫环。
1 Memory: 220K Time: 329MS
2 Language: C++ Result: Accepted
3
4 #include <iostream>
5 using namespace std;
6 bool calc(int k,int m)
7 {
8 int pos=0;
9 int sum=2*k;
10 bool flag=true;
11 while(sum>k)
12 {
13 pos=(m+pos-1)%sum;
14 if(pos<k) flag=false;
15 sum--;
16 }
17 return flag;
18 }
19 int main()
20 {
21 int k;
22 int r[13];
23 for(k=1;k<14;k++)
24 {
25 int m=k+1;
26 while(true)
27 {
28 if(calc(k,m)) {
29 r[k-1]=m;
30 break;
31 }else if(calc(k,m+1)) {
32 r[k-1]=m+1;
33 break;
34 }
35 m+=k+1;
36 }
37 }
38 while(cin>>k && k>0)
39 {
40 cout<<r[k-1]<<endl;
41 }
42 }