二进制搜索到实数函数的上界
Binary search to upper bound for a real number function
给定一个整数X,我需要找到最大整数N,使得N*log(N)<=X.
我使用二进制搜索来计算答案,但我认为在某些情况下循环是无限的。
这是我的二进制搜索功能:
int f(int X)
{
int lo=1, hi=time;
while(lo < hi)
{
int mid = lo + hi;
mid/=2;
if(mid*log2((double)mid) == X)
{
return mid;
}
if(mid*log2((double)mid) <= X)
{
hi = mid;
}
else lo=mid;
}
return lo;
}
我的方法正确吗?如果是,我的代码中的错误是什么?如果没有,正确的方法是什么?
考虑如果hi - lo == 1
会发生什么。在这种情况下,mid
等于lo
,所以lo = mid
是一个无运算,你可能会陷入一个无限循环。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- C++ 如何在单独的函数中验证用户输入的实数
- 返回对 C++11 中复数的实数或 IMAG 值的引用的函数
- 二进制搜索到实数函数的上界
- 浮点-如果一个实数可以用双精度表示,我如何编写一个返回true的C++函数