Mathematician Takeover 的题解
记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。
在解题之前提交题解的代码会导致封禁。
作者:
概述
本题要求计算给定实数 的以
为底的对数
。核心解法是使用换底公式或语言内置的
函数,直接得到正确答案。
分析
核心观察
题面说明样例给出的是数学家眼中的 ,即自然对数
,但正确目标输出是计算机科学家眼中的
,即二进制对数
。
思路
根据换底公式,有:
因此只需计算 的二进制对数。大多数编程语言的标准数学库都提供
函数,可以直接调用。若使用换底公式,注意分母
是常数。
具体示例
对于样例输入 ,正确输出应为
。而题面给出的样例输出
是
,验证了样例与正确目标的差异。
算法步骤
- 读取实数
x。 - 计算
ans=。
- 输出
ans,保留足够的小数位数。
复杂度分析
时间:
空间:
实现注意事项
- 输入保证恰好三位小数,使用
double或float即可满足精度要求。 - 输出误差需不超过
,建议输出至少
位小数。
- C++ 中
函数位于
<cmath>头文件,需要 C++11 或更高版本。 - Python 中可使用
math.log2函数。 - 注意不要误用自然对数
或常用对数
。
源代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x;
cin >> x;
cout << fixed << setprecision(10) << log2(x) << endl;
return 0;
}
import math
x = float(input())
print(f"{math.log2(x):.10f}")
评论