也就是简单的约瑟夫还问题 n个人围成一圈 开始报数 报到3 的离开 再从1开始报数 直到剩余一个人 并把他的序号输出
#include<stdio.h>
int main()
{
int n,a[100000],b=0,i,c=0;
scanf("%d",&n);
for (i=0;i<n;i++)//活着的为1,死了的为0
{
a[i]=1;
}
for (i=0;;)
{
if(a[i]==1)
{
b++;
}
if (b%3==0&&a[i]!=0)
{
a[i]=0;
c++;//统计已死亡的人数
}//数到三死亡变为0
if(c==n-1) break;//剩最后一个人的时候结束循环
i=(i+1)%n;//让数组在0-n中循环
}
for(i=0;i<n;i++)
{
if(a[i]==1)
{
printf("%d",i+1);
}
}
}