Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4.  
  5. const ll mod = 1e9 + 7;
  6. ll l, r, suml, sumr;
  7.  
  8. main() {
  9. ios_base::sync_with_stdio(0), cin.tie(0);
  10. cin >> l >> r;
  11. --l;
  12. bool f = 1;
  13. ll c1 = 1, c2 = 2, lef = 1, c = 1;
  14. while(1) {
  15. if (l == 0) break;
  16. if (lef + c - 1 >= l) {
  17. if (f) {
  18. suml = (suml + ((c1 + (l - lef) * 2 + c1) * (l - lef + 1) / 2) % mod) % mod;
  19. } else {
  20. suml = (suml + ((c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2) % mod) % mod;
  21. }
  22. break;
  23. }
  24. if (f) {
  25. suml = (suml + ((c1 + (c - 1) * 2 + c1) * (c) / 2) % mod) % mod;
  26. } else {
  27. suml = (suml + ((c2 + (c - 1) * 2 + c2) * (c) / 2) % mod) % mod;
  28. }
  29. if (f) c1 += 2 * c;
  30. else c2 += 2 * c;
  31. lef += c;
  32. c *= 2;
  33. f ^= 1;
  34. }
  35. c1 = 1, c2 = 2, lef = 1, c = 1;
  36. l = r;
  37. f = 1;
  38. while(1) {
  39. if (r == 0) break;
  40. if (lef + c - 1 >= l) {
  41. //cout << ' ' << lef << ' ' << c << '\n';
  42. if (f) {
  43. sumr = (sumr + ((c1 + (l - lef) * 2 + c1) * (l - lef + 1) / 2) % mod) % mod;
  44. } else {
  45. sumr = (sumr + ((c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2) % mod) % mod;
  46. }
  47. //cout << (c2 + (l - lef) * 2 + c2) * (l - lef + 1) / 2 << '\n';
  48. break;
  49. }
  50. if (f) {
  51. sumr = (sumr + ((c1 + (c - 1) * 2 + c1) * (c) / 2) % mod) % mod;
  52. } else {
  53. sumr = (sumr + ((c2 + (c - 1) * 2 + c2) * (c) / 2) % mod) % mod;
  54. }
  55. if (f) c1 += 2 * c;
  56. else c2 += 2 * c;
  57. lef += c;
  58. c *= 2;
  59. f ^= 1;
  60. }
  61. //cout << suml << ' ' << sumr << '\n';
  62. cout << (sumr - suml + mod) % mod << '\n';
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement