Computer >> Máy Tính >  >> Lập trình >> Python

Tích lớn nhất của các chữ số liền nhau trong Python

Giả sử chúng ta có hai số num và k, chúng ta phải tìm tích lớn nhất của k dấu liền kề trong num. Chúng ta phải lưu ý rằng num được đảm bảo có> =k chữ số.

Vì vậy, nếu đầu vào là num =52689762 và k =4, thì đầu ra sẽ là 3024, tích lớn nhất của 4 chữ số liên tiếp là (8 * 9 * 7 * 6) =3024.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • lớn nhất:=0
  • cand:=1
  • while (thương số của num / 10) ^ (k-1)> 0, do
    • chữ số:=(chữ số cuối cùng của số) ^ k
    • cand:=1
    • trong khi các chữ số> 0, thực hiện
      • cand:=cand * (chữ số mod 10)
      • nếu cand giống 0, thì
        • ra khỏi vòng lặp
      • chữ số:=thương số của chữ số / 10
    • lớn nhất:=tối đa của lớn nhất và cand
    • num:=thương số của nums / 10
  • trả về lớn nhất

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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