728x90
반응형

단순 수학 문제이다.

문제

위의 조건을 만족해야 되는데, 수학적으로 확실한 증명은 못하지만

내 생각엔 곱이 최대가 되는 정수의 조합은 [S//K] * K에 각 요소 S%k개에다 1을 더한 것이다.

실제로 이런 식으로 구현하니 통과됐다!

EX) S = 10, K = 3 -> [S//K]*3 = [3]*3 = [3, 3, 3]

S%K = 1 -> [3+1, 3, 3] -> 4*3*3 = 36

아래는 이해를 돕기 위해 풀어쓴 코드이다.

s, k = map(int, input().split())
li = [s//k for _ in range(k)]
for i in range(s%k):
    li[i] += 1
res = 1
for n in li:
    res *= n
print(res)

그냥 짧게 짠 코드

s, k = map(int, input().split())
print((s//k)**(k-s%k) * (s//k+1)**(s%k))
728x90
반응형

+ Recent posts