Question:http://poj.org/problem?id=1012
问题点:约瑟夫环。
Memory: 220K Time: 329MS
Language: C++ Result: Accepted #include <iostream>
using namespace std;
bool calc(int k,int m)
{
int pos=;
int sum=*k;
bool flag=true;
while(sum>k)
{
pos=(m+pos-)%sum;
if(pos<k) flag=false;
sum--;
}
return flag;
}
int main()
{
int k;
int r[];
for(k=;k<;k++)
{
int m=k+;
while(true)
{
if(calc(k,m)) {
r[k-]=m;
break;
}else if(calc(k,m+)) {
r[k-]=m+;
break;
}
m+=k+;
}
}
while(cin>>k && k>)
{
cout<<r[k-]<<endl;
}
}