示例#1
0
int jose(int n,int k)
{
  if (n == 1)
    return 1;
  else
    /* The position returned by josephus(n - 1, k) is adjusted because the
       recursive call josephus(n - 1, k) considers the original position 
       k%n + 1 as position 1 */
    return (jose(n - 1, k) + k-1) % n + 1;
}
示例#2
0
int main()
{
int n, t[7] = {1,10,100,1000,10000,100000,1000000};
char str[10];
while(scanf("%s", str)==1)
{
n = ((str[0]-'0')*10 + str[1]-'0')*t[str[3]-'0'];
if(!n) break;
printf("%d\n", jose(n,2));
}
return 0;
}
示例#3
0
int main(int argc, char * argv[])
{
	if (argc != 3)
	{
		printf("Usage: %s [num_players] [mth elimination]\n", *argv);
		return 1;
	}

	printf("Total Players: %d, Eliminate every %d(th) player.\n", atoi(argv[1]), atoi(argv[2]));
	printf("Last player standing is: %d\n", jose(atoi(argv[1]), atoi(argv[2])) );

	return 0;
}