c·c++/c 프로그래밍
수건돌리기, 요세푸스의 문제
바로이순간
2012. 8. 22. 10:53
#include <stdio.h>
int main() {
// 20명까지의 수건돌리기를 할 수 있도록 a의 크기를 20으로 잡았다.
int a[20]={0,};
int i, j, n, skip, cnt, x, skipcnt;
printf("명수와 몇명씩 건너뛸 것인지 입력하세요: ");
scanf("%d%d", &n, &skip); // 9 5 입력
for(i=0;i<n;++i) a[i]=i+1; // 배열에 번호를 채웁니다.
cnt=0; // 탈락한 사람의 수
skipcnt=0; // 건너뛴 사람수
i=0; // 시작하는 위치
j=n%20; // 옮길 위치
while(cnt<n-1) {
x=a[i];
i=(i+1)%20;
skipcnt+=1;
if(skipcnt<skip) {
a[j]=x;
j=(j+1)%20;
}
else {
cnt+=1;
skipcnt=0;
printf("%d ", x);
}
}
printf("남은 번호: %d", a[i]);
return 0;
}