돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개 또는 3개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000)
상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.
https://www.acmicpc.net/problem/9659
기존의 그런디수를 구하는 메커니즘을 이해한다면, n을 0부터 적어보며 규칙을 찾을 수 가 있다.
https://velog.io/@cldhfleks2/11871 (그런디수 구하는 방법)
규칙은 아래와 같다.
짝수 일때 그런디수가 0 이되어 창영이가 이기고
홀수 일때 그런디수가 0이아니므로 상근이가 이긴다.
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using std::vector; using std::stack; using std::queue;
using std::deque; using std::string; using std::pair;
using std::sort;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<double, double> pdd;
typedef pair<ll, ll> pll;
typedef pair<ll, int> pli;
typedef pair<int, ll> pil;
typedef pair<int, char> pic;
typedef pair<char, int> pci;
void init();
void init() {
int n;
scanf("%d", &n);
n % 2 ? printf("SK") : printf("CY");
}
int main(void) {
init();
return 0;
}