解题思路:
//我的思路:
//第一个人赋1,第二赋2,最后一人直接问是多少就是几号
//可以利用余数来创造一个既在增加的又在循环的数组
//再利用contiune模拟被踢出圈子
//再用m%3==0来踢人
注意事项:要慢慢debug,具体见代码备注,如有错误还望海涵
参考代码:
#include<stdio.h>
int main()
{
int n;//题目要求
scanf("%d",&n);
int a[999],b[999];
long long x=0,y=0,i,m=4,mm=0,M;//随便设的,mm用来记录总次数,M用来找具体位置
for(i=0;i<n;i++)
a[i]=i+1;
while(x!=n)//踢人
{
int w=0;
M=(mm+n)%n;
for(y=0,w=0;y<x;y++)
{
if(b[y]==a[M])
{
w++;
break;
}
}
if(w!=0)
{
mm++;
continue;
}//以上程序用于跳过已经被踢出程序的人
if(m%3==0)
{
b[x]=a[M];
x++;//比自然多一
}
m++;
mm++;
}
printf("%d",b[x-1]);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复