存在函数
显然
对于二分
或者不进行二分,根据单调性,显然 break 即可。
xxxxxxxxxx59123
45678910
11using namespace std;12using namespace __gnu_pbds;13
14mt19937 rnd(random_device{}());15int rndd(int l, int r){return rnd() % (r - l + 1) + l;}16bool rnddd(int x){return rndd(1, 100) <= x;}17
18typedef unsigned int uint;19typedef unsigned long long unll;20typedef long long ll;21typedef long double ld;22
23template<typename T = int>24inline T read(void);25
26ll Func(int a, int b){return (ll)a * a * a + (ll)a * a * b + (ll) a * b * b + (ll)b * b * b;}27int main(){28 ll N = read<ll>();29 ll mn(LLONG_MAX);30 for(int x = 0; x <= (int)1e6; ++x){31 int l = 0, r = (int)1e6;32 ll cur(-1);33 while(l <= r){34 int mid = (l + r) >> 1;35 ll tmp = Func(x, mid);36 if(tmp >= N)cur = tmp, r = mid - 1;37 else l = mid + 1;38 }39 mn = min(mn, cur);40 }printf("%lld\n", mn);41 fprintf(stderr, "Time: %.6lf\n", (double)clock() / CLOCKS_PER_SEC);42 return 0;43}44
45template<typename T>46inline T read(void){47 T ret(0);48 short flag(1);49 char c = getchar();50 while(c != '-' && !isdigit(c))c = getchar();51 if(c == '-')flag = -1, c = getchar();52 while(isdigit(c)){53 ret *= 10;54 ret += int(c - '0');55 c = getchar();56 }57 ret *= flag;58 return ret;59}update-2022_10_21 初稿