https://www.acmicpc.net/problem/1158
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int *Alive = new int[n];
int *A = new int[n]; // 죽은사람 순서
fill_n(Alive, n, 0);
int N_cnt = 0, cnt = 1, flag_cnt = 0;
// 죽은사람cnt, 로테이션cnt, m번째cnt
int i = 0;
while (N_cnt != n) {
if (Alive[(cnt - 1) % n] == 0) // cnt번째에 살아있다면
{
flag_cnt++;
if (flag_cnt == m) // m번째라면
{
Alive[(cnt - 1) % n] = 1; // cnt번째 사람 kill
N_cnt++; // 죽은사람 cnt
flag_cnt = 0; // flag_cnt 초기화
A[i++] = ((cnt-1) % n)+1 ;
}
}
cnt++;
}
cout << "<";
for (int j = 0; j < n; j++) {
cout << A[j];
if (j != n - 1)
cout << ", ";
}
cout << ">";
}
'Programming > BaekJoon' 카테고리의 다른 글
[C++] 백준 5543번 : 상근날드 (0) | 2019.02.26 |
---|---|
[C++] 백준 10797번 : 10부제 (0) | 2019.02.26 |
[C++] 백준 1929번 : 소수 구하기 (0) | 2019.02.21 |
[C++] 백준 11050번 : 이항 계수 1 (0) | 2019.02.21 |
[C++] 백준 10872번 : 팩토리얼 (0) | 2019.02.21 |