Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tích lớn nhất của các chữ số liên tiếp trong Python


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