zoukankan      html  css  js  c++  java
  • P1024 一元三次方程求解

    实数二分的题。
    第一次写的时候,发现这样的写法无法处理mid正好是根的情况,会重复输出mid。
    巧就巧在这题的数据保证不会出现长度为1的区间内出现2个根的情况,所以可以改写代码。

    原始代码

    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    double a, b, c, d;
    
    double calc(double x){
        return a * x * x * x + b * x * x + c * x + d;
    }
    
    void dfs(double l, double r){
        if(r - l <= 1e-3){
            if(calc(l) * calc(r) <= 0) printf("%.2lf ", l);
            return;
        }
        double mid = (l + r) / 2;
        dfs(l, mid), dfs(mid, r);
    }
    
    int main(){
        cin >> a >> b >> c >> d;
        
        dfs(-100, 100);
    }
    

    改写代码

    因为题目数据保证不会出现长度为1的区间内出现2个根的情况,所以如果mid为根,那么[mid - 1, mid) 区间内一定不会有根,所以就可以扔掉这个区间了,保证不会重复输出mid。

    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    double a, b, c, d;
    
    double calc(double x){
        return a * x * x * x + b * x * x + c * x + d;
    }
    
    void dfs(double l, double r){
        if(r - l <= 1e-3){
            if(calc(l) * calc(r) <= 0) printf("%.2lf ", l);
            return;
        }
        double mid = (l + r) / 2, d = 0;
        if(calc(mid) == 0) d = 1;
        dfs(l, mid - d), dfs(mid, r); 
    }
    
    int main(){
        cin >> a >> b >> c >> d;
        
        dfs(-100, 100);
    }
    
  • 相关阅读:
    04-基本的mysql语句
    03-MySql安装和基本管理
    02-数据库的概述
    MySql的前戏
    Python3连接MySQL数据库之pymysql模块的使用
    mockjs简单易懂
    GitHub Android 开源项目汇总 (转)
    国内云计算的缺失环节: GPU并行计算(转)
    HDFS+MapReduce+Hive+HBase十分钟快速入门
    同步和异步
  • 原文地址:https://www.cnblogs.com/tomori/p/13797880.html
Copyright © 2011-2022 走看看