수열과 병규

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

요약
3진법 인덱스에 대한 재귀로 정의된 수열에서 n이 10^18까지, 쿼리 20만 개에 대해 부분합 S_n을 구한다.
난이도

어려움10점 중 9점

유형
재귀, 분할 정복, 수학, 구현
정답자
아직 제출이 없습니다

문제

특이한 수열을 만드는 게 취미인 병규는 다음과 같은 수열 aa를 만들었다.

a_1=1,a_2=2a\_1 = 1, a\_2 = 2이며 모든 양의 정수 nn에 대해 아래 식을 만족한다.

  • a_3n=2a_n+2a_n+1+1a\_{3n} = 2a\_n + 2a\_{n+1} + 1
  • a_3n+1=2a_n+2−1a\_{3n+1} = 2a\_{n+2} - 1
  • a_3n+2=−2a_n+1−2a_n+2+2a\_{3n+2} = -2a\_{n+1} - 2a\_{n+2} + 2

S_n=a_1+a_2+⋯+a_nS\_n = a\_1 + a\_2 + \cdots + a\_n이라 할 때, 병규는 S_nS\_n을 빠르게 구하는 방법을 찾고 싶다. 병규를 위해 이 문제를 풀어주자.

입력

첫째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤200,000)(1 \leq Q \leq 200\\,000)

둘째 줄부터 QQ개의 줄에 걸쳐 nn이 주어진다. (1≤n≤1018)(1 \leq n \leq 10^{18})

입력으로 주어지는 모든 수는 정수이다.

출력

각 줄에 S_nS\_n을 한 줄에 하나씩 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    3
    1
    2
    3
    
    예상 출력
    1
    3
    10
    
  2. 예제 2

    입력
    1
    5
    
    예상 출력
    7