1010: 约瑟夫(Joseff)问题求解(1)
Description
约瑟夫(Joseff)问题求解。n个人围成一圈,编号依次为1,2,。。。。n,从第一个人开始报数,m号出圈,再从下一个开始报数,。。。,m号出圈,直至所有人出圈。求出圈的次序。要求利用数组实现存储。
Input
输入数据依次为n和m
Output
Sample Input
10 5
Sample Output
5 10 6 2 9 8 1 4 7 3
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,m;
cin >> n >> m;
vector<int> vec(100,0);
for(int i = 1; i <= n; i++)
vec[i] = i;
int i = 1;
int count = 0;
int t = 0;
while(t < n) {
if(vec[i])count++;
if(count == m) {
cout << vec[i] << " ";
vec[i] = 0;
t++;
count = 0;
}
i++;
i = (i - 1) % n + 1;
}
return 0;
}