만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

지루함 달래기 (쉬움)

면접 대비

시간 제한1초메모리 제한1024 MB

요약
고정된 분할 규칙에 따라 정수를 나눌 때, 1이 n개 남을 때까지 얻는 y*z 합의 최댓값을 구합니다.
난이도

쉬움10점 중 3점

유형
동적 계획법, 재귀
정답자
아직 제출이 없습니다

문제

길리안은 평소에 매우 활발한 아이다. 대부분의 시간은 친구들과 놀면서 장난을 치며 보낸다. 하지만 오늘은 다르다. 오늘 길리안은 독감에 걸려 침대에 누워 있어야 하고, 움직이지도 못한 채 지루해하고 있다. 그녀를 달래려고 오빠가 다음 게임을 생각해 냈다.

길리안이 1보다 큰 정수 xx를 갖고 있을 때, 그녀는 이것을 x=y+zx = y + z를 만족하는 두 양의 정수 yy, zz로 나눌 수 있다. 이 연산을 수행하면 오빠는 그녀에게 y⋅zy \cdot z개의 개암을 준다. 다만 모든 y,zy, z 쌍이 유효한 것은 아니다. 길리안이 지켜야 하는 규칙이 있다. 이 규칙은 쉬운 문제와 어려운 문제에서 다르며, 문제 명세 부분에 나열되어 있다.

이 연산으로 얻은 수도 다시 나눌 수 있다. 게임은 정수 nn 하나에서 시작한다. 그녀는 위의 연산을 반복해서 수행하여 1이 nn개만 남을 때까지 진행한다. 그녀가 수를 잘 골라 움직인다면, 얻을 수 있는 개암의 최대 개수는 얼마인가?

1보다 큰 모든 xx에 대해 올바른 분할 방법은 정확히 하나 존재한다.

  • xx가 3으로 나누어떨어지면, y=x/3y = x/3이고 z=2x/3z = 2x/3이다.
  • xx가 2로 나누어떨어지고 3으로는 나누어떨어지지 않으면, y=z=x/2y = z = x/2이다.
  • 그 밖의 경우에는 y=1y = 1이고 z=x−1z = x - 1이다.

입력

첫 번째 줄에는 테스트 케이스의 개수를 나타내는 정수 t≤1000t \le 1000이 주어진다. 각 테스트 케이스 앞에는 빈 줄이 하나 있다.

각 테스트 케이스는 길리안의 초기 정수 n>1n > 1이 적힌 한 줄로 이루어진다. n≤106n \le 10^6이라고 가정해도 된다.

출력

각 테스트 케이스에 대해, 얻을 수 있는 개암의 최대 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    1
    
    5
    
    예상 출력
    10