| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这样还RT?不解bool check(long num,int k)
{
int length = k*2;
long number = num%length+length;
int nodes[28];
int count = 0;
int index = 1;
int next = 1;
int k_value = k;
int j=0;
for(int i=1;i<=length;i++)
{
nodes[i]=i;
}
count = 1;
while(count <= number)
{
++next;
if(next > length)
{
next = 1;
}
if(count == number-1)
{
if(nodes[next] <= k)
return false;
for(j=next;j<=length-1;j++)
{
nodes[j] = nodes[j+1];
}
count = 0;
--k_value;
if(k_value == 0)
return true;
--length;
if(next > length)
{
next = 1;
}
number = num%length;
if(number < 3)
number += length;
}
count++;
}
return true;
}
long Joseph(int k)
{
long number = k+1;
while(true)
{
/*满足条件的数值肯定符合 number % (k+1) ==0 或者 number % (k+1)==1,这可以从这剩下一个坏人的情况下推出*/
if(check(number,k))
{
return number;
}
else if(check(number+1,k))
{
return number+1;
}
number += (k+1);
}
}
int main()
{
//ifstream in("in.txt");
int k;
while(cin>>k)
{
if(k==0)
break;
else
{
cout<<Joseph(k)<<endl;
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator