主题思路
用二分查找,快速试出谁可以三次方等于目标
注意细节
左右边界直接按照数据范围填就好了
基本写法
package main
import (
"bufio"
"os"
"fmt"
)
var (
in = bufio.NewReader(os.Stdin)
out = bufio.NewWriter(os.Stdout)
)
func main() {
var n float64
fmt.Fscanf(in, "%f", &n)
l, r := float64(-10000), float64(10000)
for r - l > 1e-8 {
mid := l + (r - l) / 2
if mid * mid * mid >= n {
r = mid
} else {
l = mid
}
}
fmt.Fprintf(out, "%f", l)
out.Flush()
}
邪道写法:直接使用go 的 math 包
package main
import (
"fmt"
"math"
)
func main() {
x := float64(0)
fmt.Scan(&x)
fmt.Printf("%.6f", math.Cbrt(x))
}