AT_arc220_e [ARC220E] popcount ≥ K

题目描述

给定正整数 $N, C, K$。 请找到最小的正整数 $X$,使得对于所有 $0 \leq i < N$,都有 $\min_{0\le i < N} \operatorname{popcount}(X + Ci) \geq K$。 可以证明,总存在这样的正整数 $X$。 共有 $T$ 组测试用例,请分别求解每组。 什么是 popcount?对于非负整数 $x$,$\operatorname{popcount}(x)$ 是 $x$ 的二进制表示中 $1$ 的个数。更形式化地说,若非负整数 $x$ 满足 $x=\sum_{i=0}^{\infty} b_i 2^i \quad (b_i \in \lbrace 0,1 \rbrace)$,则有 $\operatorname{popcount}(x)=\sum_{i=0}^{\infty} b_i$。 例如,$13$ 的二进制为 `1101`,因此 $\operatorname{popcount}(13) = 3$。

输入格式

输入由标准输入给出,格式如下: $T$ $\text{case}_1$ $\text{case}_2$ $\vdots$ $\text{case}_T$ 每组测试数据格式如下: $N\ C\ K$

输出格式

请输出每组测试数据的答案,按顺序输出,每组一行。

说明/提示

### 样例解释 1 考虑第一组测试。 $X=13$ 满足条件,具体如下: - 当 $i=0$ 时,$\operatorname{popcount}(X+Ci)=\operatorname{popcount}(13)=3$; - 当 $i=1$ 时,$\operatorname{popcount}(X+Ci)=\operatorname{popcount}(14)=3$; - 当 $i=2$ 时,$\operatorname{popcount}(X+Ci)=\operatorname{popcount}(15)=4$。 不存在比 $13$ 更小的正整数满足条件,所以第一行输出 $13$。 ### 数据范围 - $1\le T \le 10^5$ - $1\le N\le 10^8$ - $1\le C\le 30$ - $1\le K\le 30$ - 所有输入数值均为整数。 由 ChatGPT 5 翻译