【发布时间】:2014-04-02 17:57:19
【问题描述】:
我想出了这个问题。
有一种加密算法广泛使用按位异或运算。该加密算法使用一系列非负整数 x1, x2, ... xn 作为密钥。为了有效地实现这个算法,Xorq 需要为给定的整数 a、p 和 q 找到 (a xor xj) 的最大值,使得 p
输入
输入的第一行包含一个整数 T (1
每个测试用例的第一行包含由单个空格分隔的两个整数 N 和 Q (1 1, x2, ... xn 由单个空格分隔 (0 j i、pi 和 qi (0 i i i
输出
对于每个查询,打印 (ai xor xj) 的最大值,使得 pii 在一行中。
示例输入
1 15 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 6 10 1023 7 7 33 5 8 182 5 10 181 1 13 5 10 15 99 8 9 33 10 14样本输出
13 1016 41 191 191 15 107 47说明
First Query (10 6 10): x6 xor 10 = 12, x7 xor 10 = 13, x8 xor 10 = 2, x9 xor 10 = 3, x10 xor 10 = 0, therefore answer for this query is 13. Second Query (1023 7 7): x7 xor 1023 = 1016, therefore answer for this query is 1016. Third Query (33 5 8): x5 xor 33 = 36, x6 xor 33 = 39, x7 xor 33 = 38, x8 xor 33 = 41, therefore answer for this query is 41. Fourth Query (182 5 10): x5 xor 182 = 179, x6 xor 182 = 176, x7 xor 182 = 177, x8 xor 182 = 190, x9 xor 182 = 191, x10 xor 182 = 188, therefore answer for this query is 191.
我首先使数字长度(二进制) 在给定范围内相等,然后比较'a'位 具有特定 xj 值的位。但时间已超过。 java中的最大时间限制是5秒。
【问题讨论】:
-
“Xorq 需要为给定的整数 a、p 和 q 找到 (a xor xj) 的最大值,使得 p 什么是 Xorq? xj 是什么?
-
如果你想让事情尽可能慢,一定要用字符串做数学运算。
标签: algorithm