모처럼 에디토리얼을 쓰는 아스탱입니다 -ㅁ- (그동안 성적이 안좋아서 ㅠㅠ)



 - Easy (250 pts)

  * 문제설명

  혼자서도 할 수 있는 카드게임이 있습니다. 처음에는 몇 개의 덱에 카드들이 놓여져 있습니다. 그 후 각 덱에서 한 장씩의 카드를 선택하여 새로운 덱에 위치시킵니다.

  이 카드놀이는 몇번 이상 반복하면 똑같은 상태가 유지되어 매우 지루하다는 사실을 깨닫게 됩니다. 초기 상태가 주어졌을 때, 임의의 step X와 step X+S의 카드가 같은 최소한의 S를 구하시오. (즉, 같은 상태가 반복될 때, 그 주기를 구하라는 문제입니다.)


 - Medium (500 pts)

  * 문제설명

  빨간 카드 R장과 검은 카드 B장이 임의로 섞여 있습니다. 카드를 한 장 뽑았는데, 빨간카드가 나오면 1$를 받게 되고, 검은카드가 나오면 1$를 잃게됩니다. 게임을 계속하거나 그만두는 것은 당신의 의지에 달려 있습니다. 당신이 최선을 다해 게임을 진행할 때, 최대 얼마만큼의 수익을 올릴 수 있는지 구하는 프로그램을 작성하세요.



 - Hard (1000 pts)

  * 문제설명

  Change-O-Matic은 돈을 바꿔주는 기계입니다. 이 기계는 수표나 동전을 넣으면, 그것보다 작은 단위의 동전들로 바꿔줍니다. (물론 수수료는 없기 때문에 처음에 넣은 돈과 같은 돈을 줍니다.)

  Change-O-Matic이 동전을 바꿔주는 규칙은 아래와 같습니다. 우선 이 기계에는 아주 많은 동전이 쌓여있습니다. 내부적으로 동전을 찍어내는 시스템이 있기 때문에 절대로 동전이 부족한 상황은 없다고 가정할 수 있습니다.[의역] 이 기계에 세팅되어 있는 동전은 int[] outputValue로 주어집니다. 항상 1원짜리 동전은 outputValue에 포함됩니다. 우리의 최종목표는 inputValue의 돈을 1원짜리 동전을 바꾸는 것입니다.

  당신은 1원보다 큰 동전(혹은 수표)를 이 기계에 넣으려고 합니다. 이 기계의 AI는 어떤 동전(혹은 수표)가 들어왔을 때, "최소한의 동전의 개수를 돌려주는" 일을 하고 있습니다. 만약에 동전의 개수가 같다면 "lexicographically maximal "을 선호합니다. 즉 큰 가치를 가지는 동전을 최대한 돌려줍니다. 100+11+9보다는 100+12+8이 더 maximal하다고 볼 수 있지요. 아래는 문제에 정의된 lexicographically large의 definition입니다.

Let A=(a1,...,aN) and B=(b1,...,bN) be two different but equally large sets of coins, with a1 >= a2 >= ... >= aN and b1 >= b2 >= ... >= bN. Let x be the smallest index such that ax != bx. If ax > bx, we say that the set A is lexicographically larger than the set B.

   동전은 최대 50가지의 종류로 이루어져 있으며, 처음에 당신이 가지고 있는 수표는 2원부터 10^15원 사이의 금액입니다.