Hzu挑战自我


私信TA

用户名:gxhzxyjsj

访问量:98796

签 名:

2024终究会过去,期待2025!

等  级
排  名 8
经  验 27863
参赛次数 67
文章发表 157
年  龄 0
在职情况 教师
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个,继续努力!

解题思路:  用数组保存最开始位置。如果出圈,则赋值为0。反复计数,一直到出圈人数到n-1即可。

最后看看谁不是0,就是最后留下的。

注意事项:从a[1]开始保存位置。a[0]保存第n个位置,可以让循环更好进行。

参考代码:

#include <stdio.h>
#define N 100
int main()
{
	int a[N]={0};
	int i,n,k=0,m=0;
	scanf("%d",&n);
	a[0]=n;    //数组第0个存放第n位置,从第1个开始数 
	for(i=1;i<n;i++) 
		a[i]=i;  //存放位置,a[1]就是存放1,a[2]存放2等等 
	for(i=1;m<n-1;i++) //做n-1次即可,m统计出圈次数 
	{
		if(a[i%n]==0) //等于0,表示已经出圈 
			continue;
		k++;
		if(k==3)  //计数到3,则对应的出圈 
		{
			a[i%n]=0;  //出圈 
			m++;       //出圈加1 
			k=0;  
		}
	}
	for(i=0;i<n;i++)  //看看最后留下的是原来的第几号 
	{
		if(a[i]!=0)
			printf("%d",a[i]);
	}
	return 0;
}


 

0.0分

77 人评分

  评论区

小白的最有价值之物!
2022-11-22 11:58:14
妙蛙种子妙啊
2022-11-16 21:08:21
如果n是4,那为什么最后赢得是1,不应该是2吗
2022-01-21 23:01:40
写的真牛逼啊,理解一下,受益匪浅啊!!!
2021-12-22 19:32:43
牛逼,膜拜大佬
2021-12-19 16:52:33
k==3改成k%3==0,可把k=0删掉
2021-11-28 04:08:29
您好,我想问一下为什么第二个for循环不从i= 0开始,最后一个数n可以循环到吗?
2021-11-21 21:08:13
真的太漂亮了这个代码!
2021-09-02 20:48:51