编程题
### 问题描述 某银行保险箱的密码是一个整数 $C$,且保险箱一旁留有一段文字:“找到最小的整数 $d$,使得 $2^{2d}$ 严格大于 $C$”。 为了破解这个密码,你需要找出所有满足一下条件的非负整数对 $(A,B)$: - $A$ 和 $B$ 都小于 $2^d$。 - $A$ 和 $B$ 的二进制形式按位进行异或操作的结果等于 $C$。 请你找到所有满足以上条件的整数对 $(A, B)$,并计算出其中乘积(即 $A \times B$)的最大值。 ### 输入格式 输入一行包含一个整数 $C$($1 \leq C \leq 10^9$)。 ### 输出格式 输出一行,包含一个整数,表示满足条件的整数对 $(A, B)$ 的乘积 $A \times B$ 的最大值。 ### 输入样例 ```text 13 ``` ### 输出样例 ```text 70 91 ``` ### 说明 $C = 13$ 的二进制形式为 "1101"。我们可以取 $A = 10$(二进制形式为 "1010")和 $B = 7$(二进制形式为 "0111")。这样,$A$ 和 $B$ 的二进制形式按位进行异或操作的结果等于 $C$,而且 $A \times B = 70$ 是满足条件的整数对的乘积的最大值。
查看答案
赣ICP备20007335号-2