สมมติว่าเรามีตัวเลขสองตัว num และ k เราต้องหาผลคูณที่มากที่สุดของ k หลักติดกันใน num ต้องจำไว้ว่า num รับประกันว่ามีหลักมากกว่าหรือเท่ากับ k
ตัวอย่าง
หากอินพุตคือ num = 52689762 และ k = 4 ผลลัพธ์จะเป็น 3024 ผลคูณมากที่สุดของ 4 หลักติดกันคือ (8*9*7*6) = 3024
ขั้นตอนการแก้ปัญหา
largest:= 0cand:= 1- ในขณะที่
(num // 10) ** (k-1) > 0:digits:=(num % 10) ** kcand:= 1- ในขณะที่
digits > 0:cand:=cand * (digits % 10)- ถ้า
candเท่ากับ 0 ให้ออกจากลูป digits:=digits // 10
largest:= ค่าสูงสุดระหว่างlargestและcandnum:=num // 10
- คืนค่า
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