123
作者:
炽热的
,
2022-10-01 14:23:29
,
所有人可见
,
阅读 223
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long i64;
const int N = 2e6 + 10;
int n;
i64 s[N];
i64 calc(i64 x)
{
if (!x) return 0;
i64 l = 1, r = 2e6;
while (l < r)
{
i64 mid = l + r + 1 >> 1;
if ((mid + 1ll) * mid / 2 <= x) l = mid;
else r = mid - 1;
}
x -= (r + 1ll) * r / 2;
return s[r] + (x + 1ll) * x / 2;
}
int main()
{
scanf("%d", &n);
for (int i = 1; i < N; i ++ ) s[i] = s[i - 1] + 1ll * (1 + i) * i / 2;
while (n -- ) {
i64 l, r;
scanf("%lld%lld", &l, &r);
printf("%lld\n", calc(r) - calc(l - 1));
}
return 0;
}