POPCOUNT

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

요약
a+b=x인 음이 아닌 정수 a, b에 대해 A·popcount(a)+B·popcount(b)의 최댓값을 구하고, 이를 i=1부터 N까지 더한 값을 계산한다.
난이도

어려움10점 중 8점

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

문제

음이 아닌 정수 kk에 대해 popcount(k)\mathrm{popcount}(k)는 kk의 이진법 표기에서 등장하는 11의 개수를 의미한다.

양의 정수 AA, BB, xx에 대해 f(x)f(x)를 다음과 같이 정의하자.

  • f(x)=max⁡_a+b=xA×popcount(a)+B×popcount(b)f(x)=\max\limits\_{a+b=x}\\{A\times \text{popcount}(a) + B\times \text{popcount}(b)\\} (aa, bb는 음이 아닌 정수)

정수 NN이 주어질 때, ∑_i=1Nf(i)\sum\_{i=1}^N f(i)의 값을 구하여라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤10 0001 \leq T \leq 10\ 000)

다음 TT개의 줄에 테스트 케이스가 주어진다. 각 테스트 케이스에는 양의 정수 NN, AA, BB가 공백으로 구분되어 주어진다. (1≤N,A,B≤500 0001 \leq N, A, B \leq 500\ 000)

출력

각각의 테스트 케이스에 대해 한 줄씩 정답을 출력한다. 정답은 6464비트 정수 범위를 넘지 않는다.

예제1

  1. 예제 1

    입력
    3
    2 5 5
    12 4 7
    10000 500000 500000
    
    예상 출력
    15
    244
    84131000000