题解 | #求解立方根#

求解立方根

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次方与输入的数进行做差,取差值最小的立方根作为所求解即可。

#牛客创作赏金赛##求解立方根#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 11:47
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务