Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const ll mod = 1e9 + 7;
- ll l, r, suml, sumr;
- main() {
- ios_base::sync_with_stdio(0), cin.tie(0);
- cin >> l >> r;
- --l;
- bool f = 1;
- ll c1 = 1, c2 = 2, lef = 1, c = 1;
- while(1) {
- if (l == 0) break;
- if (lef + c - 1 >= l) {
- if (f) {
- suml = (suml + ((c1 + (l - lef) * 2 + c1) * (l - lef + 1) / 2) % mod) % mod;
- } else {
- suml = (suml + ((c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2) % mod) % mod;
- }
- break;
- }
- if (f) {
- suml = (suml + ((c1 + (c - 1) * 2 + c1) * (c) / 2) % mod) % mod;
- } else {
- suml = (suml + ((c2 + (c - 1) * 2 + c2) * (c) / 2) % mod) % mod;
- }
- if (f) c1 += 2 * c;
- else c2 += 2 * c;
- lef += c;
- c *= 2;
- f ^= 1;
- }
- c1 = 1, c2 = 2, lef = 1, c = 1;
- l = r;
- f = 1;
- while(1) {
- if (r == 0) break;
- if (lef + c - 1 >= l) {
- //cout << ' ' << lef << ' ' << c << '\n';
- if (f) {
- sumr = (sumr + ((c1 + (l - lef) * 2 + c1) * (l - lef + 1) / 2) % mod) % mod;
- } else {
- sumr = (sumr + ((c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2) % mod) % mod;
- }
- //cout << (c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2 << '\n';
- break;
- }
- if (f) {
- sumr = (sumr + ((c1 + (c - 1) * 2 + c1) * (c) / 2) % mod) % mod;
- } else {
- sumr = (sumr + ((c2 + (c - 1) * 2 + c2) * (c) / 2) % mod) % mod;
- }
- if (f) c1 += 2 * c;
- else c2 += 2 * c;
- lef += c;
- c *= 2;
- f ^= 1;
- }
- //cout << suml << ' ' << sumr << '\n';
- cout << (sumr - suml + mod) % mod << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement