题解 | 约瑟夫环

约瑟夫环

https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322

#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int n, k, m, res, ct;
vector<int> arr(N);
vector<bool> st(N, false);
int main()
{
    cin >> n >> k >> m;
    for(int i = 0;i < n;i++) arr[i] = i;
    for (int i = k, j = 1; ct <= n-1; i = (i + 1) % n)
    {
        // 这个位置已经被删掉了 直接往下走 
        if (st[i])
        {
            continue;
        }
        // 报数到m了 将这个位置出队
        if (j == m)
        {
            res = arr[i];
            st[i] = true;
            ct++;
            j = 1;
        }
        // 报数还没到m
        else
        {
            // 往后报数
            j++;
        }
    }
    cout << res << endl;
}

全部评论

相关推荐

09-08 17:17
同济大学 Java
狗不理fe:里面的人劝一句,别来虾,我们部门24校招生淘汰率30%,还有一些人说有一年保护期,不可能!!!
我的秋招日记
点赞 评论 收藏
分享
迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务