2024年全国高校计算机能力挑战赛C语言计算机能力挑战赛赛前模拟
18
拉手游戏某个班级共n(2<n<100)人玩报数游戏,同学们最初手拉手围成一圈。小明最开始站在第m(0<m<n) 个位置,现在从圈内第一个位置开始报数,但凡报到3就退出圈子,问小明是第几个退出圈子的人?
输入格式:一行输入两个正整数n与m
输出格式:输出小明是第几个退出圈子的人
输入样例:输入样例1:
3 3
输入样例2:
3 1
输出样例:输出样例1:
1
输出样例2:
2
解析:提示性的文字考试不需要,便于理解。
#include <stdio.h>
int main() {
int n, m; int count = 0, position = 1; // 记录当前报数的位置,count用于记录数据能被3整除时退出圈子。
// 输入n和m
printf("请输入两个正整数n与m(用空格分隔):\n ");
scanf("%d %d", &n, &m);
int circle[100]; // 用于记录每个人是否还在圈子中
for (int i = 1; i <= n; i++) {
circle[i] = i; // 初始时所有人都在圈子中
}
while (1) {
if (circle[position])
count++;
if (count % 3==0) {
circle[position] = 0;
if (position == m) {
break;
}
}
position++;
if(position>n)
position = position % n;
}
// 输出结果
printf("小明是第%d个退出圈子的人\n",count/3);
return 0;
}