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