#include<bits/stdc++.h>
typedef unsigned long long ull;
using namespace std;
int main()
{
int case1=1,t;
cin>>t;
ull x,sum;
while(t--)
{
cin>>x;
ull l,r,mid;
l=1;r=2e9;
int flag=1;
while(l<=r)
{
mid=(l+r)/2;
sum=mid*(mid+1)/2;
if(sum==x)
{
flag=0;
cout<<"Case #"<<case1<<": "<<sum<<endl;
break;
}
else if(sum<x)
{
l=mid+1;
}
else
{
r=mid-1;
}
}
if(flag)
{
sum=r*(r+1)/2;
cout<<"Case #"<<case1<<": "<<sum<<endl;
}
case1++;
}
return 0;
}
UVALive 7500 Boxes and Balls (二分)
本文介绍了一种通过二分查找法来确定一个给定整数是否为三角形数(即形如n(n+1)/2的数)的有效算法。该算法能够快速找到最接近目标值的三角形数,并通过实例演示了如何使用C++实现这一过程。

被折叠的 条评论
为什么被折叠?



