哪位大佬能帮忙看看这个代码哪儿有问题,后面三个点全部RE了
查看原帖
哪位大佬能帮忙看看这个代码哪儿有问题,后面三个点全部RE了
815093
AAAAAZBX楼主2023/3/5 19:01

哪位大佬能帮忙看看这个代码哪儿有问题,后面三个点全部RE了

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
int t;
ll l, r;
ll s[3000000];
ll search(ll n)
{
	ll l, r;
	l = 1, r = 290000;
	while (l < r)
	{
		ll mid = l + r >> 1;
		if (mid * (mid + 1) >= 2 * n) r = mid;
		else l = mid + 1;
	}
	return l;
}
int main()
{
	for (int i = 1; i < 2900000; i++)s[i] = s[i - 1] + i;
	scanf("%d", &t);
	while (t--)
	{
		ll sum = 0;
		scanf("%lld%lld", &l, &r);
		ll m, n;
		m = search(l);
		n = search(r);
		//printf("%d %d", m, n);
		if (m != n)
		{
			sum += (n * (n - 1) * (n + 1) / 6 - m * (m + 1) * (m + 2) / 6);//n+1到m-1的前缀和
			sum += (s[m] - s[l - (m - 1) * m / 2 - 1]);
			sum += (s[r - (n - 1) * n / 2]);
		}
		else sum = (s[r - (m - 1) * m / 2] - s[l - (m - 1) * m / 2 - 1]);
		printf("%lld\n", sum);
	}
	return 0;
}
2023/3/5 19:01
加载中...