题解 | #求解立方根#
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double a; double i, j; scanf("%lf", &a); if (a - 8.0 < 0.0) { if (a < 1.0) for (i = 0.1; i < 1.0; i = i + 0.1) { j = i + 0.1; if (a > i * i * i && a < j * j * j) { if (a - i * i * i < j * j * j - a) printf("%.1f", i); else printf("%.1f", j); } } else for (i = 1.1; i < 2.0; i = i + 0.1) { j = i + 0.1; if (a > i * i * i && a < j * j * j) { printf("%.1f", i); } } } else for (i = 2.1; i * i * i < 20.0; i = i + 0.1) { j = i + 0.1; if (a > i * i * i && a < j * j * j) { if (a - i * i * i < j * j * j - a) printf("%.1f", i); else printf("%.1f", j); } } if (a + 8.0 > 0.0) { if (a > -0.1) for (i = -0.1; i > -1.0; i = i - 0.1) { j = i - 0.1; if (a < i * i * i && a > j * j * j) { if (a - i * i * i > j * j * j - a) printf("%.1f", i); else printf("%.1f", j); } } else for (i = -1.1; i > -2.0; i = i - 0.1) { j = i - 0.1; if (a < i * i * i && a > j * j * j) { printf("%.1f", i); } } } else for (i = -2.1; i * i * i > -20.0; i = i - 0.1) { j = i - 0.1; if (a < i * i * i && a > j * j * j) { if (a - i * i * i > j * j * j - a) printf("%.1f", i); else printf("%.1f", j); } } } 求解立方根首先判断输入的数的范围,分为正数和负数,正数以0.1、1.0、8.0作为分界点,同理负数以-0.1、-1.0、-8.0作为分界点,然后立方根之间相差0.1,将前后两个立方根的3次方与输入的数进行做差,取差值最小的立方根作为所求解即可。#牛客创作赏金赛##求解立方根#