1. 程式人生 > >NOI:2806 二分法求函式的零點

NOI:2806 二分法求函式的零點

題目連結


題解:二分法

注意:double判斷大小應該用差值小於某個數來進行判斷

#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
double test(double k){
    return pow(k,5)-15*pow(k,4)+85*pow(k,3)-225*pow(k,2)+274*k-121;
}
int main(){
    double l=1.500000,r=2.400000;
    double mid=0.0;
    while(abs(l-r)>0.000001){
        mid=(l+r)/2;
        if(test(mid)>0){
            l=mid;
        }else if(test(mid)<0){
            r=mid;
        }
    }
    printf("%.6f\n",mid);
}