출처 : 반크_반크 20년 백서
문제]
스탠(Stan)과 올리(Ollie)가 정수 p에 2 이상 9 이하의 수 가운데 하나를 곱하는 곱하기 게임을 한다. 항상 가장 먼저 게임을 시작하는 것은 스탠으로, p=1에서 시작해서 곱하기를 한다. 그러면 올리는 그 수를 받아서 곱셈을 한 다음 다시 스탠한테 순서를 넘기고, 이런 과정이 반복된다. 게임을 시작하기 전에 무작위로 1보다 크고 4,294,967,295보다 작은 정수를 하나 뽑는데, 둘 중에서 n 이상인 p를 먼저 만들어내는 사람이 게임의 승자가 된다.
입력
각 줄마다 정수 n이 하나씩 주어진다.
출력
각 입력 줄에 대해 다음 중 하나를 줄력한다.
Stan wins.
Ollie wins.
이때 스택과 올리는 모두 완벽하게 게임을 한다고 가장하자.
입력 예
162
17
34012226
출력 예
Stan wins.
Ollie wins.
Stan wins.
출처]
Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제37 곱하기 게임(A Multiplication Game) p157
참고풀이]
#include <stdio.h>
int main()
{
unsigned int N;
int t;
while(scanf("%lu",&N)==1)
{
t=0;
while(N>1)
{
N=((N-1)/(t ?2 :9))+1;
t=1-t;
}
printf("%s wins.\n",(t ?"Stan" :"Ollie"));
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 219제] 다항식의 계수(Polynomial Coefficients) (0) | 2025.01.21 |
---|---|
C언어 217제] 1의 개수(Ones) (0) | 2025.01.21 |
C언어 216제] 뒤집어서 더하기(Reverse and Add) (0) | 2025.01.16 |
C언어 215제] 자리 올림(Primary Arithmetic) (0) | 2025.01.16 |
C언어 214제] 셸 정렬(Shell Sort) (0) | 2025.01.16 |
댓글