숫자 n이 있다고 가정하면 n을 3의 고유한 거듭제곱의 합으로 나타낼 수 있는지 여부를 확인해야 합니다. y =3^x인 정수 x가 존재하는 경우 정수 y는 3의 거듭제곱이라고 합니다.
따라서 입력이 n =117과 같으면 117 =3^4 + 3^3 + 3^2 + =81 + 27 + 9이므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
16에서 0 사이의 i에 대해 1 감소, 수행
-
n>=3^i이면
-
n :=n - 3^i
-
-
-
n> 0이면
-
거짓을 반환
-
-
참을 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n): for i in range(16, -1, -1): if n >= pow(3,i): n -= pow(3,i) if n > 0: return False return True n = 117 print(solve(n))
입력
117
출력
True