Giả sử chúng ta có một số n, chúng ta phải kiểm tra xem có thể biểu diễn n dưới dạng tổng các lũy thừa phân biệt của ba hay không. Một số nguyên y được cho là lũy thừa của ba nếu tồn tại một số nguyên x sao cho y =3 ^ x.
Vì vậy, nếu đầu vào là n =117, thì đầu ra sẽ là True vì 117 =3 ^ 4 + 3 ^ 3 + 3 ^ 2 + =81 + 27 + 9.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
đối với tôi trong phạm vi 16 đến 0, giảm đi 1, thực hiện
-
nếu n> =3 ^ i, thì
-
n:=n - 3 ^ i
-
-
-
nếu n> 0 thì
-
trả về Sai
-
-
trả về True
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
117
Đầu ra
True