uvalive 7500 Boxes and Balls

时间:2021-01-07 05:18:09

https://vjudge.net/problem/UVALive-7500

题意:

找到规律之后发现给出一个数n,要求找到1 + 2i + ... + x <= n,找出1到x的和。

思路:

一看n就知道要二分,还以为是二分写炸了。。。结果是r的范围太小了,因为n最大是1e18,又有除以2,所以r应该是2e9才对,不是1e9。

代码:

 #include <stdio.h>

 int main()
{
int t; scanf("%d",&t); int cas = ; while(t--)
{
long long a; scanf("%lld",&a); long long l = ,r = 2e9; while (l < r - )
{
long long mid = (l + r) >> ; if ((mid) * (mid + ) / <= a) l = mid;
else r = mid - ;
} while((l + ) * (l + ) / <= a) l++; printf("Case #%d: %lld\n",++cas,(l + ) * l / );
} return ;
}