P8574官方题解
注:本题解中的做法为出题人原做法,并不代表最优。
考虑对于
因为
所以设
这里给出计算的代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t,n;
signed main(){
cin>>t;
while(t--){
cin>>n;
long double ans=0.0;
int sum=0,cnt=0;
while(true){
cnt++;
if(sum+4*cnt*cnt*cnt+cnt>n)break;
ans+=4*cnt*cnt+1;
sum+=4*cnt*cnt*cnt+cnt;
}
ans+=1.0*(n-sum)/cnt;
cout<<fixed<<setprecision(6)<<ans<<endl;
}
return 0;
}