카드를 섞는 방법은 여러가지가 있다. 일본 카드 게임 hahafuda 를 섞는 방법은 이 중 한가지 이다.
이 카드를 섞는 방법은 다음과 같다.
n 장의 카드가 쌓여져 있다. 위에서 p 번째 카드부터 c 장의 카드를 빼서 이를 위로 올리면서 카드를 섞는 작업을 계속한다.
이 방법으로 카드를 섞는 작업을 시뮬레이션 했을 때 제일 위 카드는 어떤 카드가 되는 지를 알고자 한다.
답
package main2;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
while (true) {
int n = scanner.nextInt();
int r = scanner.nextInt();
if (n == 0 || r == 0) {
break;
}
int A[] = new int[n];
for (int i = 0; i < n; i++) {
A[i] = i + 1;
}
while (r-- > 0) {
int p = scanner.nextInt();
int c = scanner.nextInt();
int B[] = new int[n];
int idx = 0;
for (int i = 0; i <= n - p - c; i++) {
B[idx++] = A[i];
}
for (int i = n - p+1; i < n; i++) {
B[idx++] = A[i];
}
for (int i = n - p - c + 1; i <= n - p; i++) {
B[idx++] = A[i];
}
for (int i = 0; i < n; i++) {
A[i] = B[i];
}
}
System.out.println(A[n-1]);
}
}
문제 http://59.23.150.58/30stair/shuffle/shuffle.php?pname=shuffle
답
import java.util.Scanner;
public class Main { public static void main(String args[]) {
}