Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ผลคูณมากที่สุดของหลักติดกันใน Python

สมมติว่าเรามีตัวเลขสองตัว num และ k เราต้องหาผลคูณที่มากที่สุดของ k หลักติดกันใน num ต้องจำไว้ว่า num รับประกันว่ามีหลักมากกว่าหรือเท่ากับ k

ตัวอย่าง

หากอินพุตคือ num = 52689762 และ k = 4 ผลลัพธ์จะเป็น 3024 ผลคูณมากที่สุดของ 4 หลักติดกันคือ (8*9*7*6) = 3024

ขั้นตอนการแก้ปัญหา

  1. largest := 0
  2. cand := 1
  3. ในขณะที่ (num // 10) ** (k-1) > 0:
    • digits := (num % 10) ** k
    • cand := 1
    • ในขณะที่ digits > 0:
      • cand := cand * (digits % 10)
      • ถ้า cand เท่ากับ 0 ให้ออกจากลูป
      • digits := digits // 10
    • largest := ค่าสูงสุดระหว่าง largest และ cand
    • num := num // 10
  4. คืนค่า largest

การใช้งาน

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))

อินพุต

52689762, 4

เอาต์พุต

3024