OUPC2024 Day2 : 北海道大学セット
コンテスト日時
2025/03/16 (Su) 12:00 - 16:00

D - Bits, be ambitious

Milk
3.5
s
1024
MB
100

問題文

整数 $K,A,B$ が与えられます。集合 $S$ を $K$ の倍数である正整数全体の集合と定義したとき、$\min\limits_{x \in S}\ \lbrace A \times \mathrm{popcount}(x)+ B \times \mathrm{bitlength}(x)\rbrace$ を求めてください。

$\mathrm{popcount}(x)$ とは?

正整数 $x$ に対して、$x$ を $2$ 進数表記したときに $2^i$ の位が $1$ であるような非負整数 $i$ の個数を $\mathrm{popcount}(x)$ と定義します。
例えば、$13$ を $2$ 進数表記すると 1101 なので、$\mathrm{popcount}(13) = 3$ です。

$\mathrm{bitlength}(x)$ とは?

正整数 $x$ に対して、$x$ を $2$ 進数表記したときに $2^i$ の位が $1$ であるような最大の整数 $i$ を用いて、$\mathrm{bitlength}(x)=i+1$ と定義します。
例えば、$13$ を $2$ 進数表記すると 1101 なので、$\mathrm{bitlength}(13) = 4$ です。

制約

  • $1 \leq K,A,B \leq 3 \times 10^{5}$
  • 入力はすべて整数である

部分点

  • set1 $(10$ 点$)$:$K= 2$ かつ $A,B \leq 1000$
  • set2 $(20$ 点$)$:$K,A,B \leq 1000$
  • all $(70$ 点$)$:追加の制約はない

入力

入力は以下の形式で標準入力から与えられます。

$K$ $A$ $B$

出力

答えを出力してください。

入力例 1
2 252 886
出力例 1
2024

この入力例は部分点 set1 , set2 の制約を満たします。

入力例 2
13 1 10
出力例 2
43

$x = 13$ のとき、$A \times \mathrm{popcount}(x)+ B \times \mathrm{bitlength}(x) = 43$ です。$x$ を $13$ の倍数である正整数のどの値にしても $A \times \mathrm{popcount}(x)+ B \times \mathrm{bitlength}(x)$ は $43$ 未満になりません。

この入力例は部分点 set2 の制約を満たします。

入力例 3
13 10 1
出力例 3
27

この入力例は部分点 set2 の制約を満たします。

入力例 4
181549 300000 1
出力例 4
600083

$x = 181549 \times 26635802336881595045 = 2^{82}+1$ とすると、$A \times \mathrm{popcount}(x)+ B \times \mathrm{bitlength}(x) = 600083$ です。
$181549$ の倍数で、「$2^{82}$ 以下かつ $\mathrm{popcount}$ が $2$ 以下」または「 $\mathrm{popcount}$ が $1$ 以下」を満たす正整数は存在しません。

入力例 5
31415 92653 58979
出力例 5
1651214
入力例 6
300000 300000 300000
出力例 6
8100000
提出
C++23 (g++ 12.2.0)