这道题就是针对N为41时才会有有一个人不死的特殊情况而设计的啊 你要是改成别的了不就偏离题意了吗?

编了一个,当有41个人时答案是19,改成其它的也可以,但答案可能随着改变
#define M 41
#define N 2
main()
{
int a[M],i,flag=0,num_flag=0;
for(i=0;i<M;i++)
a[i]=i+1;
printf("\noutput:\n");
i=0;
while(num_flag<M)
{
if(a[i]!=0)
{
flag++;
if(flag%N==0)
{
printf("=>%d",a[i]);
num_flag++;
a[i]=0;
}
}
i++;
if(i==M)i=0;
}
getch();
}
/*n为人数*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, n;
long sum;
while(scanf("%d", &n) != EOF)
{
if(n == 1)
printf("%d\n", n);
else
{
for(i = 0;;i ++)
{
sum = 2 << i;
if(sum - n > 0)
break;
}
sum = 2 << (i - 1);
printf("%ld\n", 2 * (n - sum) + 1);
}
}
return 0;
}