CF276D Little Girl and Maximum XOR

题目描述

一个小女孩非常喜欢位运算相关的问题。这里有一个这样的题目。 你被给定两个整数 $l$ 和 $r$。现在考虑所有满足 $l \leq a \leq b \leq r$ 的整数对 $a$ 和 $b$,对于每对 $a$ 和 $b$,计算 $a \oplus b$ 的值。你的任务是找出在所有可能中最大的 $a \oplus b$ 的值。 表达式 $x \oplus y$ 表示对整数 $x$ 和 $y$ 进行按位异或操作。这一操作在所有现代编程语言中都存在,比如在 C++ 和 Java 中用“^”表示,在 Pascal 中用“xor”表示。

输入格式

输入一行,包含用空格分隔的两个整数 $l$ 和 $r$,满足 $1 \leq l \leq r \leq 10^{18}$。 请不要在 C++ 中使用 %lld 读取或输出 64 位整数,建议使用 cin、cout 流或 %I64d 读写。

输出格式

输出一行,单独输出一个整数,表示在所有满足条件的 $(a, b)$ 对中可以得到的最大的 $a \oplus b$ 的值。

说明/提示

由 ChatGPT 5 翻译