搜索—Problem_1001-Can you solve this equation?

本文介绍了一个数学方程问题的解题过程,通过二分搜索法找到表达式中x的近似值。当给定y值时,利用单调函数特性,快速定位到满足条件的x值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                  搜索—Problem_1001

题意
数学方程问题,给定一个关于x和y的表达式,其中y是输入的,x是0-100间的数,根据输入的y的值求表达式中x的近似值。
解题思路
所给表达式的函数是单调性的,所以对表达式中x的取值可以采用二分搜索的方法,然后比较逐步调整x的最佳范围,最终找到最佳符合条件的x,并输出。
感想
先做的第二题,又看的这个,算法稍有改变,但题目类似。
AC代码

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

double f(double x)
{
    return 8*pow(x,4.0)+7*pow(x,3.0)+2*pow(x,2.0)+3*x+6;
}

int main()
{
    int t,y;
    cin>>t;
    while(t--)
    {
        cin>>y;
        double low=0;
        double high=100;
        double mid;
        if(f(low)>y||f(high)<y)
            cout<<"No solution!\n";
        else
        {
            while(high-low>1e-9)  
            {  
                mid = (low + high) / 2;
                if( f(mid)>y ) high=mid;
                else low=mid;
            }
            cout<<setiosflags(ios::fixed)<<setprecision(4)<<mid<<endl;  
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值