#include<iostream>
#include<vector>
#include<ctime>
using namespace std;
int main(){
int n=0,m=0,i=0,p=0,num=0;
srand((unsigned int)time(NULL));
cout << "输入循环人数n" << endl;
cin >> n>>m ;
int m = 1+rand() % n - 1;
vector<bool>vec(n,1);
int left = n;
while (left > 1) {
i = num;
num = m % left - 1;
if (num < 0)num += m;
for (int j = 1; j <= num; i++) {
if (vec[i % n] != 0)j++;
}
vec[i % n] = 0;
p = i + 1;
for (;; p++) {
if (vec[p % n] != 0)break;
}
num = p % n;
left--;
}
cout << "留下的人的编号为" << num + 1 << endl;
return 0;
}
(第三次上机)n 个人围成一圈,从 1 开始顺序编号;游戏开始,首先生 成一个 n-1 区间内的随机数,从第一个人开始由 1 到 m 报数,报到 m 的人 退出圈,问最后留下的那个人的序号
最新推荐文章于 2022-03-17 14:44:06 发布