&LemonTree 2023-10-26 20:53 采纳率: 50%
浏览 5

(标签-蓝桥杯|关键词-stream)(相关搜索:蓝桥杯|出圈约瑟夫)

蓝桥杯题集中的第1160道:出圈(约瑟夫问题)
题目描述:
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。
输入格式:
输入多行,每行2个数,分别表示n和m.
输出格式:
计算每一行中最后剩下这个人的编号.
样例输入:

10 3

样例输出:

4

我的解答

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n;
    cin>>m;
    vector<int> people(n,0);
    int out=0,cur=-1;
    while(out<(n-1)){
        for(int i=0;i<m;i++){
            cur=(cur+1)%n;
            while(people[cur]){
                cur=(cur+1)%n;
            }
        }
        people[cur]=1;
        out++;
    }
    do{
        cur=(cur+1)%n;
    }while(people[cur]);
    cout<<cur+1<<endl;
    
    return 0;
    
}

提交结果:

img


究竟是哪里出了问题🤯

  • 写回答

2条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 10月26日