Codeforces 276D. Little Girl and Maximum XOR

来源:互联网 发布:手机直接安装linux系统 编辑:程序博客网 时间:2024/06/07 18:28
D. Little Girl and Maximum XOR
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

A little girl loves problems on bitwise operations very much. Here's one of them.

You are given two integers l and r. Let's consider the values of  for all pairs of integers a and b (l ≤ a ≤ b ≤ r). Your task is to find the maximum value among all considered ones.

Expression  means applying bitwise excluding or operation to integers x and y. The given operation exists in all modern programming languages, for example, in languages C++ and Java it is represented as "^", in Pascal — as «xor».

Input

The single line contains space-separated integers l and r (1 ≤ l ≤ r ≤ 1018).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cincout streams or the %I64dspecifier.

Output

In a single line print a single integer — the maximum value of  for all pairs of integers ab (l ≤ a ≤ b ≤ r).

Sample test(s)
input
1 2
output
3
input
8 16
output
31
input
1 1
output
0

#include <stdio.h>int main(){unsigned long long l, r;unsigned long long finger = (unsigned long long)1 << 63;scanf("%I64u%I64u", &l, &r);if(l == r)finger = 0;else {while(!((l&finger) ^ (r&finger)))finger >>= 1;finger = (finger << 1) - 1;}printf("%I64u\n", finger);return 0;}
我漏了第6行的强制类型转换,后来发现了这个错误。
0 0
原创粉丝点击