나의 풀이 :

T = int(input())
for tc in range(1, T + 1):
N, P = map(int, input().split())
Q, R = N//P, N % P
ans = (Q+1)**R * Q**(P-R)
print('#{} {}'.format(tc, ans))


한마디 :

음... 문제를 읽자마자 이게 D5 난이도가 맞나 싶었다. 증명하라면 어려울지 모르겠으나, 직관적으로 곱이 최대가 되려면 최대한 몫에 밀집되어 있어야 한다.