P16138 位的方程(popcount)

题目描述

给定一个正整数 $a$,输出一个正整数 $n$,使得 $a\times\operatorname{popcount}(n)=n$,其中 $\operatorname{popcount}$ 表示二进制表示中 $1$ 的个数,如果不存在,输出 $-1$,如果答案不唯一,可以输出任意一个。 **你需要解决 $T$ 个这样的问题。**

输入格式

第一行输入一个正整数 $T$,表示问题的个数。 第 $i+1\ (1\le i\le T)$ 行输入一个正整数 $a$,表示第 $i$ 个问题。

输出格式

输出 $T$ 行,第 $i\ (1\le i\le T)$ 行输出一个整数表示第 $i$ 个问题的答案。

说明/提示

### 样例解释 对于第 $1$ 个问题,$5\times\operatorname{popcount}(10)=5\times 2=10$。 对于第 $2$ 个问题,$27\times\operatorname{popcount}(81)=27\times 3=81$,另外 $108$ 也是一个答案。 对于第 $3$ 个问题,可以证明不存在正整数 $n$ 使得 $26\times\operatorname{popcount}(n)=n$。 ### 数据范围 对于所有测试数据,保证: - $1\le T\le 10^5$; - $1\le a\le 10^{16}$。 ::cute-table{tuack} |测试点编号|$a\le$|$T\le$|特殊性质| |:-:|:-:|:-:|:-:| |$1$|$10$|$10$|无| |$2$|$4000$|$1000$|保证有解| |$3,4$|^|^|无| |$5$|$10^{16}$|$54$|$a$ 是 $2$ 的幂| |$6\sim 10$|^|$10^5$|无|