不拿国一不改名 题解分享 · 2025/3/29
咒语 - 题解
本题可以使用双指针,可以用一个数取最小值,一个数取最大值来向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; } ```
查看全文
0 0 0 2