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 }
时间: 2024-10-12 08:48:38