108 字
1 分钟
408 每日一题 Day4

408 每日一题 Day4#

设 n 是描述问题规模的非负整数,下面程序片段的时间复杂度是( )。

x = 1.0;
while (x < n)
x += 0.01 * x

A. O(1)O(1)
B. O(log2n)O(\log_{2} n)
C. O(n)O(n)
D. O(nlog2n)O(n\log_{2} n)

正确答案:B#

解析:
x+=0.01xx += 0.01 * x 等价于 x=1.01x *= 1.01
设循环执行 kk 次,则有 x=1.01kx=1.01^k,循环条件 1.01kn1.01^k \ge n,解得 k=log1.01n=log2nlog21.01k=\log_{1.01}n=\frac{\log_2 n}{\log_2 1.01},由于 log21.01\log_2 1.01 为常数,因此时间复杂度为 O(log2n)O(\log_{2} n)

408 每日一题 Day4
https://blog.asone2020.top/posts/408/408-每日一题-day4/
作者
As_One
发布于
2026-04-29
许可协议
CC BY-NC-SA 4.0