fork download
  1. #include <iostream>
  2. #include<math.h>
  3. using namespace std;
  4.  
  5. int MOD = 1000000007L;
  6. typedef long long ll;
  7. ll power(ll a, ll n){ // I've made a recurrence relation here -> a^n = n%2==0 ? a^(n/2) * a^(n/2) : a^(n/2) * a^(n/2) * a ;
  8. if(n==1)return a;
  9. ll x = power(a,n/2) * power(a, n/2);
  10. if(n%2==1) x*=a;
  11. return x;
  12. }
  13. int main() {
  14.  
  15. int t=0;
  16. scanf("%d",&t);
  17. while(t--){
  18. long long l = 0, r=0, ans=0, id=0, n =0;
  19. scanf("%lld %lld", &l, &r);
  20. n=l;
  21. while(n!=0){
  22. n/=2;
  23. id++;
  24. }
  25. long long x = power(2,id);
  26. x--;
  27. if(r>x){
  28. x = x-l+1;
  29. }
  30. else x = r-l+1;
  31.  
  32. ans = (x%MOD * l%MOD)%MOD;
  33. printf("%lld\n", ans);
  34.  
  35. }
  36. return 0;
  37. }
Success #stdin #stdout 0s 4524KB
stdin
4
14 15
4 7
4 10
3000000000 1000000000000000000
stdout
28
16
16
805686980