游客 Signup | Login
中文 | En

1451 - C语言-报数

有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

Input

初始人数n

Output

最后一人的初始编号

Examples

Input

3

Output

2

Solution C

#include <stdio.h>
main(){
	int n,i=1,j=0,k=0,a[1000]={0};
	scanf("%d",&n);
	while(j<n-1){
		if(i==3&&a[k]==0){a[k]=1;j++;}
		k++;if(k==n)k%=n;
		if(a[k]==0)i=i%3+1;
	}
	for(i=0;i<n;i++)if(a[i]==0){
		printf("%d",i+1);break;
	}
}

Solution C++

#include "stdio.h"
#include "string.h"
int main(int argc, char* argv[])
{
	int num[100],v[100],n,i,j,count;
	while(~scanf("%d",&n))
	{
	  memset(v,0,sizeof(v));
	 for(i=1;i<=n;i++)
	   num[i]=i;
	 j=1;count=0;i=1;
	 while(i<n)
	 {
		if(j>n) j%=n;
		if(v[j]==0)
		 {
		   count++;
		 }
		 if(count==3) {
		   count=0;i++;v[j]=1;
		 }
		 j++;
	 }
       for(i=1;i<=n;i++)
         if(v[i]==0)
			 printf("%d\n",i);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题