题解:P10373 [AHOI2024 初中组] 立方根
· 阅读需 1 分钟
原题链接
解题思路
令:
则:
由于 cbrt(x)
或 pow(x,1.0/3)
可能会有精度误差,可以手写二分开立方根。
参考代码
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
ll cube_root(ll x)
{
ll l=0,r=100000;
while(l<r)
{
ll mid=l+r>>1;
if(mid*mid*mid>x)r=mid;
else l=mid+1;
}
return l-1;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int q;
cin>>q;
while(q--)
{
ll x;
cin>>x;
ll t=cube_root(x);
cout<<(x+1)*t-(t*t*t*t+2*t*t*t+t*t)/4<<'\n';
}
return 0;
}