Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 연속 숫자의 가장 큰 곱

<시간/>

두 개의 숫자 num과 k가 있다고 가정하면 num에서 k 연속 숫자의 가장 큰 곱을 찾아야 합니다. num은>=k 자리가 보장된다는 점을 명심해야 합니다.

따라서 입력이 num =52689762 및 k =4와 같으면 출력은 3024가 되고 연속된 4자리 숫자의 최대 곱은 (8*9*7*6) =3024입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 가장 큰 :=0
  • 캔디 :=1
  • while (num/10의 몫)^(k-1)> 0, do
    • 숫자 :=(숫자의 마지막 숫자)^k
    • 캔디 :=1
    • 숫자> 0, do
      • cand :=cand * (숫자 모드 10)
      • cand가 0과 같으면
        • 루프에서 나오다
      • 숫자 :=숫자의 몫 / 10
    • largest :=가장 큰 것과 캔드의 최대값
    • num :=숫자의 몫 / 10
  • 가장 큰 수익

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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