문제
풀이 및 답
문제에서 정의하는 operations를 생각해보면 결국 아래와 같아진다는 것을 알았다.
- N보다 작으면서 가장 큰 2의 제곱을 뺀다.
이를 적용하여 로직을 작성했다.
#!/bin/python3
# read the number of testcases
T = int(input())
# iterate for T
for i in range(T):
# read the initial number set in the counter
N = int(input())
# initial result of winner
winner_is_louise = True
while N != 1:
# initial value is 2^0
power_of_two = 1
# get largest power of 2 and it must be less than N
while N > power_of_two << 1:
power_of_two = power_of_two << 1
# reduce counter set
N -= power_of_two
# escape condition
if N == 1:
break
# overturn result of winner
winner_is_louise = not winner_is_louise
# print output
print('Louise' if winner_is_louise else 'Richard')