질문 사항이 있으시면 댓글로 달아주시거나 hanirc에 있는 #icpc 채널로 오셔서 astein을 찾아주세요.

(댓글로 달면 답변이 늦어질 수 있으므로 irc로 오시는 것을 추천합니다 :)


A. Crop Triangles

    [문제 설명]

  격자 좌표에 많은 나무들이 심어져 있다. 당신은 이 나무들을 연결하여 삼각형을 만들고 싶다. 특히 삼각형의 중심이 "정수 좌표"가 되는 경우를 원한다. 참고로 (x1, y1), (x2, y2), (x3, y3)로 이루어진 삼각형의 중심 좌표는 ( (x1 + x2 + x3) / 3, (y1 + y2 + y3) / 3 ) 이다. 

  입력은 아래의 pseudo-code를 사용하여 generate 한다.

  X = x0, Y = y0
  print X, Y
  for i = 1 to n - 1
    X = (A * X + B)  MOD M
    Y = (C * Y + D) MOD M

  만약 넓이가 0인 삼각형이라고 하더라도, 이 문제에서는 valid한 삼각형이라고 본다.


B. Number Sets 

    [문제 설명]
  
  연속된 숫자들이 있을 때, 당신은 이 숫자들을 그룹으로 묶어서 관리하고 싶어한다.

  어떤 정수 구간 [A, B]와 자연수 P가 주어진다. 초기 상태는 각각의 숫자들은 하나씩으로 이루어진 그룹을 형성하고 있다.

  이 구간에서 임의의 두 숫자를 선택했을 때, 둘 모두 P 이상의 소수로 나누어 떨어진다면, 이 두 숫자들이 이루어진 그룹을 하나로 합칠 수 있다. 이 과정을 반복하면 최종 상태에는 몇 개의 그룹이 남겠는가?

  A = 10, B = 20, C = 3 이라면 아래와 같이 7개의 그룹이 만들어진다.
  {10, 12, 15, 18, 20}, {11}, {13}, {14}, {16}, {17}, {19}



C. Mousetrap 

    [문제 설명]

  Mousetrap은 혼자서 할 수 있는 간단한 카드게임이다. 이 게임은 1부터 N으로 이루어진 N장의 카드를 사용한다. 게임의 규칙은 아래와 같다.

 1. 게임은 제일 윗 장의 카드를 확인한다. 
 2. 1부터 시작해서 하나씩 카운트 해 나간다. 카운트한 숫자와 카드에 쓰여져 있는 숫자가 같다면 카드를 덱에서 제거하고 (1)을 반복한다. 카드를 덱에서 제거한 경우 다시 1부터 카운트한다. 만약 두 수가 같지 않다면 현재 카드를 덱 아래로 넣고 (1)을 반복한다.
 3. 만약 당신의 카운트가 N+1이 된다면 당신은 지게 된다. 그 전에 모든 카드를 덱에서 제거했다면 당신은 이긴다.

  카드 덱에 2, 5, 3, 1, 4 순서로 카드가 쌓여있다고 하자. 그러면 첫 턴에 2를 오픈하고, 카운트는 1이므로 패스한다. 그 다음 5를 오픈하고, 카운트는 2이므로 패스한다. 세 번째로 3이 오픈되고, 카운트가 3이 되므로 우리는 이 덱에서 3을 제거할 수 있다. [그러면 현재 상태는 1, 4, 2, 5가 된다. 카드는 항상 덱 아래에 넣는다는 것을 참고한다.]  두 번째 턴에는 1을 오픈하고, 카운트가 1이므로 바로 제거할 수 있다. 같은 방법으로 반복하면 2, 4, 5의 순서로 제거할 수 있고, 당신은 이 게임을 이길 수 있게 되는 것이다.

  카드를 잘 배열하면 덱에서 제거하는 순서를 1에서부터 차례대로 없앨 수 있다. 이러한 경우를 "Perfect" 한 경우라고 부른다. 예를 들어 4장의 카드를 사용한 게임에서 1, 4, 2, 3으로 카드가 배치되어 있다면 "Perfect"한 경우가 되는 것이다. 당신은 N장의 카드를 가지고 게임을 할 때 "Perfect" 한 게임을 할 수 있는 초기상태에서, k번째 위치에 있는 카드를 구하는 프로그램을 작성하여야 한다. (input/output은 원래 문제를 참조하세요)