만드는 중입니다

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

Believer

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

요약
합이 n인 양의 정수 수열 가운데, 서로 다른 값마다 등장 횟수의 이진수 1 개수를 더한 값이 최대가 되는 경우를 각 n마다 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 수학, 비트 연산
정답자
아직 제출이 없습니다

문제

용을 믿는가? 밤에 용이 깨어나서 이런 질문을 던진다고 상상해 보자.

양의 정수로 이루어진 수열 a=⟨a1,a2,…,ak⟩a = \langle a_1, a_2, \ldots, a_k \rangle를 생각하자.

f(a,x)f(a, x)를 aa에서 xx가 나타나는 횟수로 정의하자. 예를 들어 f(⟨1,4,1,1⟩,1)=3f(\langle 1, 4, 1, 1 \rangle, 1) = 3이다.

c(y)c(y)를 yy의 이진 표현에서 1의 개수로 정의하자. 예를 들어 c(13)=c(11012)=3c(13) = c(1101_2) = 3이다.

b(a)=∑i∈ac(f(a,i))b(a) = \sum \limits_{i \in a} c(f(a, i))로 정의하자. 예를 들어 b(⟨1,4,1,1⟩)=c(3)+c(1)=2+1=3b(\langle 1, 4, 1, 1 \rangle) = c(3) + c(1) = 2 + 1 = 3이다.

주어진 nn에 대해, ∑i=1kai=n\sum \limits_{i=1}^{k} a_i = n을 만족하는 모든 수열 중에서 b(a)b(a)의 최댓값을 구하자.

무엇이라고 답하겠는가?

입력

첫째 줄에 정수 tt가 주어진다. (1≤t≤1031 \le t \le 10^3)

다음 tt개 줄에 각각 정수 nn이 하나씩 주어진다. (1≤n≤10181 \le n \le 10^{18})

출력

각 테스트 케이스에 대해 입력 순서대로 답을 한 줄에 하나씩 출력한다.

힌트

첫 번째 예제에서 b(a)=3b(a) = 3을 만족하는 수열의 예로 a=⟨1,4,1,1⟩a = \langle 1, 4, 1, 1 \rangle이 있다.

예제1

  1. 예제 1

    입력
    2
    7
    42
    
    예상 출력
    3
    10