D-小蓝的二进制询问_河南萌新联赛2024第(一)场:河南农业大学 (nowcoder.com)
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
typedef double db;
typedef long double ldb;
typedef pair<int, int> pii;
typedef pair<ll, ll> PII;
#define pb emplace_back
//#define int ll
#define all(a) a.begin(),a.end()
//#define x first
#define y second
#define ps push_back
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define lc u << 1
#define rc u << 1 | 1void solve();const int N = 1e6 + 10;
const int mod = 998244353;signed main() {IOS;ll t = 1;cin >> t;while (t--)solve();return 0;
}ll f(ll x)
{ll e = 2,sum = 0;x++;//0 也算一个,所以真实的下标是数字+1while(x >= e/2)//x 最大二进制位 x/2{sum = (sum + (x/e)*(e/2)) % mod;if(x % e != 0)sum =( sum + max(0LL,x % e - e/2))%mod;//前半部分,后半部分e *= 2;}return sum;
}void solve() {ll l,r;cin >> l >> r;cout << (f(r) - f(l-1) + mod) % mod << endl;
}