题目链接
https://ac.nowcoder.com/acm/problem/22227
解题思路
模拟环。
这道题顺序数就行,顺序是逆时针,逆时针的箭头是往左拐的,变成直线后趋于正半轴所以是 +
。
不过,这道模拟环并没有说从idx号开始,往左/右数几个人,所以不需要考虑 +
或 -
。
因为不会越界,所以也不用额外%n
。
AC代码
#include <iostream>
#include <vector>
using namespace std;
int n, st, m, i;
vector<int> v;
int main()
{
while (cin >> n >> st >> m)
{
v.clear();
for (int i = 1; i <= n; ++ i) v.push_back(i);
int pos = st - 1;
for (int i = n - 1; i >= 0; -- i) // 赶走n-1个人,会被淘汰n-1次
{
pos = (pos + m - 1) % v.size(); // 每次从第pos个人开始,m-1:下标应当从0开始
v.erase(pos + v.begin()); // 删除第pos个人
}
cout << v[pos] << endl;
}
}
标签:include,int,NC22227,pos,约瑟夫,st,刷题
From: https://www.cnblogs.com/ClockParadox43/p/17424444.html