Cho số num và k, tìm tích lớn nhất của k chữ số liên tiếp trong num. num đảm bảo có ít nhất k chữ số.
Ví dụ, num = 52689762, k = 4, đầu ra 3024 (tích lớn nhất 4 chữ số liên tiếp: 8*9*7*6 = 3024).
Các bước giải quyết:
largest := 0.cand := 1.- Trong khi
num // 10**(k-1) > 0:digits = num % 10**k.cand = 1.- Trong khi
digits > 0:cand *= digits % 10.- Nếu
cand == 0, thoát vòng lặp. digits //= 10.
largest = max(largest, cand).num //= 10.
- Trả về
largest.
Ví dụ minh họa
class Solution:
def solve(self, num, k):
largest = 0
while num // 10 ** (k - 1) > 0:
digits = num % 10 ** k
cand = 1
while digits > 0:
cand *= digits % 10
if cand == 0:
break
digits //= 10
largest = max(largest, cand)
num //= 10
return largest
ob = Solution()
num = 52689762
k = 4
print(ob.solve(num, k))
Đầu vào
52689762, 4
Đầu ra
3024