有 个排成一个环的格子,编号为 。现在进行如下操作: 选择 号格子,将其打上标记。 选择 个格子后的第一个尚未被标记的格子,将其打上标记。 重复执行直到所有格子都被打上标记。 你需要输出第 次标记的格子的编号c++
时间: 2024-04-14 19:30:17 浏览: 16
以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <vector>
int main() {
int n, m;
std::cout << "请输入格子数量 n:";
std::cin >> n;
std::cout << "请输入选择的格子数 m:";
std::cin >> m;
std::vector<bool> marked(n, false);
int current = 0;
for (int i = 0; i < n; ++i) {
int count = 0;
while (count < m) {
if (!marked[current]) {
++count;
}
++current;
if (current >= n) {
current = 0;
}
}
marked[current - 1] = true;
}
std::cout << "第 " << m << " 次标记的格子的编号为:" << current << std::endl;
return 0;
}
```
这段代码首先要求输入格子数量 n 和选择的格子数 m。然后使用一个布尔数组 marked 来记录每个格子是否被标记过,初始时都设置为 false。然后,使用一个变量 current 来记录当前格子的编号,初始时为 0。接下来,进行 n 次循环,每次循环选择 m 个格子后的第一个尚未被标记的格子,并将其打上标记。最后输出第 m 次标记的格子的编号。
注意:题目中的格子编号从 1 开始,而数组下标从 0 开始,所以在输出结果时,需要将 current 加一。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)