알고리즘 문제

[C/C++ 백준 11868번] 님 게임 2 (Platinum 4)

새파란 공대생 2020. 9. 1. 23:28

https://www.acmicpc.net/problem/11868

 

11868번: 님 게임 2

koosaga와 cubelover가 님 게임을 하고 있다. 님 게임은 돌을 차곡 차곡 위로 쌓아올린 돌 더미 k개를 이용한다. 각각의 돌 더미에는 한 개 이상의 돌이 있다. 두 사람은 서로 턴을 번갈아가면서 님 게�

www.acmicpc.net

https://librewiki.net/wiki/%ED%95%84%EC%8A%B9_%EC%A0%84%EB%9E%B5_%EA%B2%8C%EC%9E%84#.EC.84.B8_.EB.8D.94.EB.AF.B8_.EC.9D.B4.EC.83.81

 

필승 전략 게임

필승 전략 게임은 어느 한 쪽이 반드시 이길 수 있는 전략을 가진 게임을 말한다.

librewiki.net

참고. 항상 bit가 가장 큰 수를 바꾸면 xor연산을 진행했을 때, 0을 만들 수 있다. 상대방은 어떤 행동을 진행하더라도 xor연산을 진행했을때 0이 아니게 되므로, 위 행동을 반복하면 결국 이길 수 있다.

 

#include <cstdio>
int main(void){
	unsigned long long int N, P[101], s;
	scanf("%d", &N);
	for(int i=0; i<N; i++){
		scanf("%llu", &P[i]);	
	}
	s = P[0];
	for(int i=1; i<N; i++){
		s = s ^ P[i];
	}
	if(s>0)
		printf("koosaga");
	else
		printf("cubelover");
}