刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

某班级男生人数为X人,女生人数为Y人,现全班同学围成一个圆圈,并按照顺时针方向为每名同学编号(编号从1到X+Y)。现给出一个正整数K【2<K<(X+Y)】,从编号为1的同学开始顺时针方向报数,报到K的同学退出圆圈,下一名同学继续从1报数,再次报到K的同学退出圆圈。如此循环,直到剩余人数为X时游戏结束。

请你计算出游戏开始时X名男生分别应该排在什么位置,才能保证每次离开的都是女生,游戏结束时剩余X人都是男生。并将游戏开始时每名男生的位置编号按照从小到大顺序输出。

例如:X=5,Y=3,K=3,8名同学按照如下顺序排列,可以使3轮报数过后最后剩余的5名同学都为男生(蓝色为男生位置,红色为女生位置)。

故5名男同学的编号分别为2,4,5,7,8。

输入描述:

输入三个正整数X,Y,K(3≤X≤100,3≤Y≤100,2<K<(X+Y)),X表示男生人数,Y表示女生人数,报数为K的同学退出圆圈,三个正整数之间以一个空格隔开

输出描述:

将每名男生位置编号按照从小到大的顺序输出,编号之间以一个空格隔开

 

样例输入:

5 3 3

样例输出:

2 4 5 7 8

使用微信搜索喵呜刷题,轻松应对考试!

答案:

br />输入三个正整数X,Y,K,首先计算总人数T=X+Y,然后按照以下步骤计算男生应排的位置:1. 定义一个列表record,用于记录每个男生的位置编号。2. 定义一个变量num表示当前人数,初始化为T。3. 从1开始遍历,对于每个位置i,如果num%K==0,说明该位置是女生,跳过;否则,将位置i加入record,并将num减1。4. 当num==X时,游戏结束,输出record中的位置编号。

解析:

【喵呜刷题小喵解析】
根据题目描述,每次报数为K的同学都会退出圆圈,所以女生退出的顺序是从编号能被K整除的位置开始,一直到游戏结束剩余X人。因此,男生应该排在不能被K整除的位置,才能保证每次离开的都是女生。

具体实现时,我们可以从位置1开始遍历,对于每个位置i,如果num%K==0,说明该位置是女生,跳过;否则,将位置i加入record,并将num减1。当num==X时,游戏结束,输出record中的位置编号。

需要注意的是,由于题目中要求输出位置编号按照从小到大的顺序,所以在遍历过程中,我们需要将位置编号加入record,而不是直接输出。最后,再将record中的位置编号按照从小到大的顺序输出即可。
创作类型:
原创

本文链接:编程实现: 某班级男生人数为X人,女生人数为Y人,现全班同学围成一个圆圈,并按照顺时针方向为每名同学

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share