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

파이썬에서 합이 주어진 소수의 곱을 찾는 프로그램

<시간/>

숫자 n이 있다고 가정하고 그 합이 n이 되도록 두 개 이상의 숫자를 찾아야 하고 이 숫자의 곱이 최대화되면 곱을 찾아야 합니다.

따라서 입력이 n =12와 같으면 출력은 3 + 3 + 3 + 3 =12 및 3 * 3 * 3 * 3 =81과 같이 81이 됩니다.

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

  • dp() 함수를 정의합니다. n

    소요됩니다.
  • n이 0과 같으면

    • 1 반환

  • 답변 :=0

  • 범위 1에서 n + 1까지의 i에 대해 수행

    • ans :=ans의 최대값 및 (i * dp(n − i))

  • 반환

  • 기본 방법에서 다음을 수행하십시오 -

  • 리턴 dp(n)

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

예시

class Solution:
   def solve(self, n):
      def dp(n):
         if n == 0:
            return 1
         ans = 0
         for i in range(1, n + 1):
            ans = max(ans, i * dp(n - i))
         return ans
      return dp(n)
ob1 = Solution()
print(ob1.solve(12))

입력

12

출력

81