2021-01-10
문제
돌 게임은 두 명이서 즐기는 재밌는 게임이다.
탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 4x개 만큼 가져갈 수 있다. 즉, 가능한 개수는 1, 4, 16, 64, ...개 이다. 4x개만큼 돌을 가져갈 수 있는 방법이 없는 사람이 게임을 지게 된다.
두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다.
입력
첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000)
출력
상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다.
import java.util.Scanner;
public class TemplateA {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int set = n ;
// n을 담아둘 변수
int plus = 0;
// 4의 증가하는 승수를 담아둘 변수
int count = 0;
// 상근과 창영이의 턴을 체크할 변수
while(true) {
set -= Math.pow(4, plus);
// 각 턴마다 4의 plus승을 빼줌
plus++;
count++;
//턴이 지났으니 모두 하나씩증가
if(set < 0) {
// set이 0보다 작아진 경우는 그 턴에 4의 plus 재곱의 값이
// 컸다는 이야기 그턴에 사람이 패배
if(count % 2 == 0) {
System.out.println("SK");
break;
}else {
System.out.println("CY");
break;
}
}
}
}
}
출처링크 : www.acmicpc.net/problem/9661