Shirley Kwan
Senior Member
Nhờ mọi người thông giúp em bài này với ạ
Đề bài
Em viết bằng Python như vầy:
Tuy nhiên có 1 cách giải như vầy:
Theo em thì không cần tính n % 4 = 0 vì nó ko thể bằng 0. Ai gõ đầu em với ạ. Em cảm ơn rất nhiều
Đề bài
Cho số nguyên dương n, nhiệm vụ của bạn là viết hàm xác định xem n có phải là luỹ thừa của 4 hay không.
Ví dụ
Đầu vào/Đầu ra
- Với n = 16, đầu ra là isPowerOfFour(16) = true.
Giải thích: 16 bằng 4^2 nên kết quả của hàm là true.- Với n = 7, đầu ra là isPowerOfFour(4) = false.
Giải thích: 7 không phải là lũy thừa của 4.
- [giới hạn thời gian chạy] 0,5 giây
- [đầu vào] long n
[đầu ra] boolean
Trả về true nếu n là luỹ thừa của 4, ngược lại trả về false.
Em viết bằng Python như vầy:
Submit thì pass không nói gì, vì nó đơn giản và dễ hiểu.import math
def isPowerOfFour(n):
if n <= 0 or not isinstance(n, int):
return false
return math.log(n, 4).is_integer()
Tuy nhiên có 1 cách giải như vầy:
Vì trong đề bài chỗ này n là số nguyên dương, và không thể chia hết cho 4 == 0 được, nên cái vòng lặp này có đúng logic không ạ.def isPowerOfFour(n):
while n % 4 == 0 and n > 0:
n /= 4
return n == 1
Theo em thì không cần tính n % 4 = 0 vì nó ko thể bằng 0. Ai gõ đầu em với ạ. Em cảm ơn rất nhiều