有n个人围成一圈,顺序编号,从第一个人开始报数,凡报到3的人出圈,编写程序,问最后留下的是原来第几号的那位?
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,i,count,index,begin;
int *p;
scanf("%d",&n);
p=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
p[i]=1;
count=n;
index=0,begin=0;
while(count>1)
{
while(p[index]==0)
index=(index+1)%n;
begin++;
index=(index+1)%n;
if(begin%3==0)
{
p[(index+n-1)%n]=0;
count--;
begin=0;
}
}
for(i=0;i<n;i++)
if(p[i])
printf("%d\n",i+1);
return 0;
}