最后三个re了,不知道是数组问题还是数据超范围了
查看原帖
最后三个re了,不知道是数组问题还是数据超范围了
1229013
Mr_LiuXinan楼主2024/5/16 23:56

代码如下:

#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;
}
2024/5/16 23:56
加载中...