1 条题解
-
0
本题可以使用双指针,可以用一个数取最小值,一个数取最大值来向X的中间值来逼近,类似于二分枚举的思想
#include<cstdio> #include<iostream> #include<vector> #include<map> #include<cstring> #include<array> #include<queue> #include<algorithm> #include<set> #include<cmath> using namespace std; using i64=long long; //using i128=__int128; const i64 INF=1e18; const int mod=998244353; //const int N=1e9+7; i64 qmi(i64 a,i64 b){ i64 res=1; while(b){ if(b&1)res*=a; a*=a; b>>=1; } return res; } void solve(){ i64 n; cin>>n; i64 a=0,b=1e6; i64 minX=1e18; while(a<=b){ i64 X=qmi(a,3)+qmi(a,2)*b+a*qmi(b,2)+qmi(b,3); if(X>=n){ minX=min(minX,X); b--; } else a++; } cout<<minX<<'\n'; } int main(){ int _=1; //cin>>_; while(_--)solve(); return 0; }
- 1
信息
- ID
- 304
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 109
- 已通过
- 16
- 上传者