数组不能再大了,再大全体TLE, 然后呢unsigned long long也用上了,所以我不知道该怎么调了。
求助求助!! 代码如下:
#include <iostream>
#include <cmath>
using namespace std;
const int grps = 2e6+9;
typedef unsigned long long ull;
ull evys[grps], // 每组的和、截止当前组数字的个数
ttls[grps]; // 截止当前组,前面所有组的数字的和
ull n, l, r;
ull s_l, s_r;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
for (int i=1; i<=grps; ++i) {
evys[i] = i + i*(i-1)/2;
ttls[i] = evys[i] + ttls[i-1];
}
cin >> n;
ull index;
while (n--) {
cin >> l >> r;
index = (sqrt(1+8*l)-1)/2;
s_l = ttls[index];
if (l != evys[index])
s_l += evys[l-evys[index]-1];
else
s_l -= index;
index = (sqrt(1+8*r)-1)/2;
s_r = ttls[index];
if (r != evys[index])
s_r += evys[r-evys[index]];
cout << s_r - s_l << "\n";
}
return 0;
}