编程题
### 问题描述 古希腊某位数学家对其弟子提出了这样一个问题,给出一个整数 $F$,找到最小的整数 $x$,使得 $2^{2x}$ 严格大于 $F$。 这样的问题对于古希腊时代的学者计算量十分庞大,但如今我们可以运用现代知识去解决这一问题,我们需要找出所有满足以下条件的非负整数对 $(M,N)$: - $M$ 和 $N$ 都小于 $2^x$。 - $M$ 和 $N$ 的二进制形式按位进行异或操作的结果等于 $F$。 这里请找到所有满足以上条件的整数对 $(M, N)$,并计算出其中乘积(即 $M \times N$)的最大值。 ### 输入格式 输入的第一行包含一个整数 $S$,表示有 $S$ 组测试数据。 每组测试数据只有一行,包含一个整数 $F$。 数据范围保证:$1 \leq S \leq 10^2$ ,$1 \leq F \leq 10^3$。 ### 输出格式 对于每组测试数据,输出一行,包含一个整数,表示满足条件的整数对 $(M, N)$ 的乘积 $M \times N$ 的最大值。 ### 输入样例 ```text 2 13 10 ``` ### 输出样例 ```text 70 91 ``` ### 说明 对于第一组测试数据,$F = 13$ 的二进制形式为 "1101"。我们可以取 $M = 10$(二进制形式为 "1010")和 $N = 7$(二进制形式为 "0111")。这样,$M$ 和 $N$ 的二进制形式按位进行异或操作的结果等于 $F$,而且 $M \times N = 70$ 是满足条件的整数对的乘积的最大值。 对于第二组测试数据,$F = 10$ 的二进制形式为 "1010"。我们可以取 $M = 13$(二进制形式为 "1101")和 $N = 7$(二进制形式为 "0111")。这样,$M$ 和 $N$ 的二进制形式按位进行异或操作的结果等于 $F$,而且 $M \times N = 91$ 是满足条件的整数对的乘积的最大值。
查看答案
赣ICP备20007335号-2