되는대로 살자

[C언어 기출문제&풀이] 커피캔 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 커피캔

malu 2010. 11. 1. 20:00

프로그램 명: can(open problem)
제한시간: 1 초

어떤 커피 캔 속에 검은 콩과 하얀 콩이 섞여 들어가 있다. 그리고 당신에게는 무한 개의 검은 콩이 주어져 있다.

당신은 캔에 콩이 하나가 남을 때까지 다음 과정을 반복한다.(최종적으로 하나의 콩이 남는다는 것은 보장된다.)

  1. 캔에서 콩 두개를 아무렇게나 집는다.
  2. 두 콩의 색이 같으면, 둘 다 캔에서 빼내고 별도로 검은 콩 하나를 캔에 넣는다. 두 콩의 색이 다르면, 하얀 콩은 다시 캔에 넣고 검은 콩만 빼낸다.
문제는, 캔 속에 들어 있는 검은 콩과 하얀 콩의 개수가 주어질때, 최종적으로 남는 콩의 색깔을 구하는 것이다.

입력

캔에 든 검은 콩의 개수와 하얀 콩의 개수가 순차적으로 주어진다. 각 콩의 개수는 2^31-1 이하이다.

출력

최종적으로 남은 콩의 색깔이 하얀색이면 white, 검은색이면 black을 출력한다.

입출력 예

입력

25 23

출력

white

입력

16 4

출력

black

입력

17 2

출력

black
출처+채점데이터:jwvg0425 
풀이 : 각 콩의 개수만을 주고서 최종적으로 남는 콩의 종류를 구하는 것을 묻고 있는데 
이것은 어떻게 뽑더라도 마지막에 남는 콩의 종류는 같다고 생각할 수 있다. 
(예시에서 보면 답이 하나인데 뽑는 순서에 따라서 남는 콩의 종류가 달라진다면 하나의 답이 
나올 수 없다.) 
따라서 자신이 하고 싶은 순서에 따라 편하게 뽑으면 된다. 
먼저 하얀 콩을 두개씩 계속 뽑는다. 조건대로 반복 하게되면 하얀콩이 짝수라면 마지막에 
검은 콩만 남게 되고 하얀콩이 홀수라면 하얀콩이 마지막에 남게 된다. 
정리하자면 하얀콩의 갯수가 짝수라면 검은콩만이 남게 되고 하얀콩의 갯수가 홀수라면 하얀콩이
마지막으로 남게 된다. 







소스파일 :
1#include <stdio.h>
2  
3int main()
4
5    int white,black;
6    scanf("%d %d",&black,&white);
7    if(white%2==0) printf("black");
8    else printf("white");
9}