Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这样还RT?不解

Posted by vincentguo at 2007-11-22 17:14:10 on Problem 1012
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator