মনে করো একটা সিরিজ আছে ১+২+৩............+ N =SUM
মনে করি SUM দেওয়া আছে N বের করা লাগবে
যেখানে SUM=10^18 হতে পারে
লুপ চালিয়ে করলে টাইম লিমিট যাবে+ বের করা সম্ভব না
তাই জন্য বাইনারি সার্চ সহজ নিয়ম
কোডঃ-
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int main()
{
long ts;
scanf("%ld",&ts);
while(ts--)
{
unsigned long long s,k,hi=6074000999,low=0,mid,ans,x,xx;
scanf("%llu",&s);
while(hi>=low)
{
mid=(hi+low)/2;
ans=1;
if(mid%2==0)
{
ans=ans*(mid/2)*(mid+1);
}
else
{
ans=ans*(mid)*((mid+1)/2);
}
if(ans<=s)
{
low=mid+1;
x=mid;
}
else
hi=mid-1;
}
cout<<x<<endl;
}
return 0;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন