Codeforces 276D. Little Girl and Maximum XOR
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
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 cin
In a single line print a single integer — the maximum value of for all pairs of integers a, b (l ≤ a ≤ b ≤ r).
Sample test(s) input1 2output
3input
8 16output
31input
1 1output
0
我漏了第6行的強制型別轉換,後來發現了這個錯誤。#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; }