解题思路:
注意事项:
参考代码:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n+2];
for(int i=1;i<=n;i++)//初始化
{
a[i]=i;
}
int count=n;//记录当前的个数,如果个数变为一时,说明找到了
int s=0;//计数器的存在,到了第三个时就进行删除操作
for(int i=1;;i++)//中间给空语句,让它一直跑下去
{
if(a[i%n]!=0)//取余数,确保一直在数组的范围内,避免非法访问
{
s++;
if(s==3)//删除操作
{
a[i%n]=0;
count--;
s=0;//类似于回溯
}
}
if(count==1)//循环终止条件
break;
}
for(int i=1;i<=n;i++)
{
if(a[i]!=0)
{
printf("%d",a[i]);
break;
}
}
return 0;
}
0.0分
0 人评分