Oiclass P2261 题解
这道题实际上很简单
先看题目,会发现,这道题似乎很想模拟题,但是又好像不是,因为用正常的方法没法模拟,或者说很难模拟。看标签仔细观察就可以知道,这是一道数据结构相关的模版题,具体会用到队列。
思路如下:
- 首先输入题目中提到的 \(n\) 和 \(c\)
- 在队列中压入 \(1 \to n\) 的所有自然数,对于 \(n = 6\) 的情况,队列应该是这样的:\(队头\ 1,2,3,4,5,6\ 队尾\)
- 进行一个
while
循环,循环的条件是!q.empty() //q 是一个队列
在循环中,如果这个报数报到 \(c\) 了,那么就输出当前的这个数(即队头),如果还没有报到,那么就将现在的队头扔到队尾(q.push(q.front()); q.pop();
),方便后面输出。
实现:
实现其实非常简单,只需要创建一个队列,按照思路的前两步做,对于第三步,我们需要创建一个临时变量 \(p\) ,如果 \(p=c\) 那么输出,同时将 \(p\) 赋值为 \(1\) ,如果不符合条件(\(!(p=c)\)),那么就 \(p =p+1\) . 代码如下:
1 |
|
Oiclass P2261 题解
https://lixuannan.github.io/posts/c0f28fe.html