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

过不了,求优化

Posted by sukiida at 2013-03-13 16:07:19 on Problem 1012
#include <stdio.h>
#include <string.h>

int main()
{
    int k = 0;
    while (1)
    {
	if (scanf("%d", &k) != 1)
	{
	    return 0;
	}

	if (0 == k)
	{
	    return 0;
	}

	int m = k + 1;//
	while (1)
	{
	    int i = 0;
	    int pos = 0;
	    for (; i < k; i++)
	    {
		pos = (m + pos - 1) % (2 * k - i);//next person to be killed
		if (pos < k)
		{
		    break;
		}
	    }
	    if (k == i)//if k bad guys were killed
	    {
		printf("%d\n", m);
		break;
	    }
	    else
	    {
		++m;
		if (m % (2 * k) == 0)//in this region a good guy will be killed at first
		{
		    m += k;
		}
	    }
	}
    }

    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