import sys
def cube_root(x, epsilon=0.001, max_iterations=100):
if x == 0:
return 0
guess = x / 3 # 初始猜测值为 x/3
for _ in range(max_iterations):
next_guess = (2 * guess + x / (guess * guess)) / 3 # 二次迭代法公式
if abs(next_guess - guess) < epsilon:
return round(next_guess,1)
guess = next_guess
return round(guess,1)
for line in sys.stdin:
a = line.rstrip()
print(cube_root(float(a)))
有待研究,下面两种时间效率不够。
def cube_root(x, epsilon=0.0001):if x == 0:return 0
import sys
def cube_root(x, epsilon=0.01):
if x == 0:
return 0
low = 0
high = max(1, x)
guess = (low + high) / 2
while abs(guess ** 3 - x) > epsilon:
if guess ** 3 < x:
low = guess
else:
high = guess
guess = (low + high) / 2
return round(guess,1)
for line in sys.stdin:
a = line.rstrip()
print(cube_root(float(a)))
############################
import sys
def cube_root(x, epsilon=0.01):
low = 0
high = x
guess = (low + high) / 2
while abs(guess ** 3 - x) > epsilon:
if guess ** 3 < x:
low = guess
else:
high = guess
guess = (low + high) / 2
return round(guess,1)
for line in sys.stdin:
a = line.rstrip()
print(cube_root(float(a)))

京公网安备 11010502036488号