当前位置: 首页 > wzjs >正文

手机网站建设机构小程序与app的区别

手机网站建设机构,小程序与app的区别,专业网站设计专业服务,轻奢风格装修图片2025 - 02 - 13 - 第 52 篇 作者(Author): 郑龙浩 / 仟濹(CSND) 【二分搜索】 P1024 一元三次方程求解 题目描述 有形如: a x 3 b x 2 c x d 0 a x^3 b x^2 c x d 0 ax3bx2cxd0 这样的一个一元三次方程。给出该方程中各项的系数( a , b , c ,…

2025 - 02 - 13 - 第 52 篇
作者(Author): 郑龙浩 / 仟濹(CSND)
【二分搜索】

P1024 一元三次方程求解

题目描述

有形如: a x 3 + b x 2 + c x + d = 0 a x^3 + b x^2 + c x + d = 0 ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数( a , b , c , d a,b,c,d a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在 − 100 -100 100 100 100 100 之间),且根与根之差的绝对值 ≥ 1 \ge 1 1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 2 2 位。

提示:记方程 f ( x ) = 0 f(x) = 0 f(x)=0,若存在 2 2 2 个数 x 1 x_1 x1 x 2 x_2 x2,且 x 1 < x 2 x_1 < x_2 x1<x2 f ( x 1 ) × f ( x 2 ) < 0 f(x_1) \times f(x_2) < 0 f(x1)×f(x2)<0,则在 ( x 1 , x 2 ) (x_1, x_2) (x1,x2) 之间一定有一个根。

输入格式

一行, 4 4 4 个实数 a , b , c , d a, b, c, d a,b,c,d

输出格式

一行, 3 3 3 个实根,从小到大输出,并精确到小数点后 2 2 2 位。

输入输出样例 #1

输入 #1

1 -5 -4 20

输出 #1

-2.00 2.00 5.00

说明/提示

【题目来源】

NOIP 2001 提高组第一题

思路

首先要分析题目:
判断是否为 “根” 只有两种方法:

**前提:x 是以 1 个单位长度依次递增,而不是2 3 4什么的,就是一个单位长度 **

  • f( x ) == 0x 百分百为 “根”

  • left < right 且 f( left ) * f( right ) < 0,在 left 与 right 之间会有一个 x,这个 x 就是根

    为什么要确定 leftright 呢??

    因为 left 与 right 是两个整数,而这两个整数的距离实际上是1,比如 1与2,2与3,然后再确定具体的值1.23, 2.45(随便举例)等

    并且 f( left ) f( right ),一个为 正 一个为负数,中间可定有一个 f( x ) 为 0

    所以确定下来 left, right之后的任务就是:将 x 求出来,如何求???

    使用二分算法

    • 范围为 left ~ right

    • 不断 left ~ right / 2 ,直到满足 left < right right - left <= 0.001

      right - left <= 0.001 意思就是: 确定下来这两个数之间的差为三个小数,这样就能将 将结果变为 left 了

      Eg: 最后一层循环:

      left = 1.234
      right = 1.235
      ans = 1.234;
      // 四舍五入: 1.23
      

      当二分法的区间长度缩小到0.001时,取中间值作为近似解,四舍五入到两位小数时误差不会超过0.005。例如,假设真实解在某个区间[left, right],其中right - left = 0.001。此时中间值mid的误差最大是0.0005,这样在保留两位小数时,结果会是正确的。例如,若真实解是1.2345,而mid是1.234或1.235,四舍五入到两位小数后都是1.23或1.24,但需要确保在两位小数时的正确性。或者,可能作者认为当区间足够小时,可以直接输出区间端点中的某个值,作为近似解。

代码流程

  1. 输入系数a, b, c, d
  2. 遍历i-100到100,每次检查区间[i, i+1]是否存在根。
  3. 对于每个i,先检查f(i)是否为0,如果是就直接输出。
  4. 如果f(i)*f(i+1) < 0,说明该区间有一个根,调用二分法查找。
  5. 二分法在区间内不断缩小区间,直到区间长度小于0.001,然后返回左端点作为近似解。
  6. 所有找到的根按顺序输出。

代码

// 洛谷P1024一元三次方程求解
// 2025-02-12
// 郑龙浩 / 仟濹
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
double a, b, c, d;
// 查找 left 与 right 之间的 x
double binary_search_self( double left, double right );
// 计算带入方程结果
double fun( double x );
int main( void ){cin >> a >> b >> c >> d;for( int i = -100; i <= 99; i ++ ){// if fun( i ) 的值 == 0.,就代表 i 就是根// 因为 i 是从小到大判断的,无需sortif ( fun( i ) == 0 ){// 记住: i 要转换成 double 类型,不然 直接 直接用 %f 打印 int ,结果是0// 因为我找了半天错,没找出来,就是这里写错了,要强制类型转换(小细节)printf( "%.2f ", (double)i );}if ( fun( i ) * fun( i + 1 ) < 0 ){ // 确定下来这个根在 i 与 i + 1 间double ans = binary_search_self( i, i + 1 );printf( "%.2f ", ans );}}return 0;
}
// 查找 left 与 right 之间的 x
double binary_search_self( double left, double right ){double middle;while( right - left > 0.001 ){middle = ( left + right ) / 2.0;if( fun( left ) * fun( middle ) < 0 ) right = middle;//说明根在left~mid中 else left = middle;//说明根在mid~right中 }return ( left + right ) / 2;// 精度更高,可以不left - AI 给我提的意见// 第一次写的做法// return left; // 输入left 千万不要right 比如: 1.234,1.235,输出第二个四舍五入的1.24
}
// 计算带入方程结果
double fun( double x ){double ans = a * pow(x, 3) + b * pow(x, 2) + c * x + d;return ans;
}

文章转载自:

http://zzYvKslw.zcqtr.cn
http://9g1p4KBM.zcqtr.cn
http://O0r0eaN5.zcqtr.cn
http://S84XdtRo.zcqtr.cn
http://5q9G8NSj.zcqtr.cn
http://SPPiZYOe.zcqtr.cn
http://QywKL9SE.zcqtr.cn
http://zjf7yprh.zcqtr.cn
http://MeJZhLUS.zcqtr.cn
http://mhcw5uPk.zcqtr.cn
http://HMVrsA6o.zcqtr.cn
http://MzToia6c.zcqtr.cn
http://TM6HUl8l.zcqtr.cn
http://B5dmDNHr.zcqtr.cn
http://VZTlqFbk.zcqtr.cn
http://wxRiLOhF.zcqtr.cn
http://n8YUTLx6.zcqtr.cn
http://LzV5WlYH.zcqtr.cn
http://yFG3yXTl.zcqtr.cn
http://ZyQUd7lC.zcqtr.cn
http://bthER5Ox.zcqtr.cn
http://SzBYuGh0.zcqtr.cn
http://ml0to0Ze.zcqtr.cn
http://muxyTTsV.zcqtr.cn
http://xQY4O4Cb.zcqtr.cn
http://iy4LbIUT.zcqtr.cn
http://li5wMlPs.zcqtr.cn
http://2rpywpzp.zcqtr.cn
http://q6pr2Br6.zcqtr.cn
http://aLFihCG6.zcqtr.cn
http://www.dtcms.com/wzjs/619042.html

相关文章:

  • 在百度上如何上传自己的网站做网站 珠海
  • 网站建设属于什么行业类别wordpress电视剧主题
  • 国外界面设计网站个人网站开发人员
  • 知名网站欣赏设计优秀的企业网站
  • 网站是怎么盈利的wordpress删除修订版
  • 深圳创意网站电子商务网站建设的认识的心得
  • 前程无忧怎么做网站wordpress中文主题推荐
  • 永久免费自助建站推荐兰州正规seo整站优化
  • 动力启航做网站wordpress博客搬家主页404
  • 网站运行速度慢的原因用凡科网建设的网站
  • 做网站需要花多少钱写网站建设的软文
  • 如何制作个人网页文档网站排名优化软件电话
  • 网站app服务器租用合肥做兼职网站
  • 运维负责做网站吗高级seo
  • 哪些网站用python做的工装定制
  • 网站关键词部署谷歌搜索引擎入口2022
  • 怎么创建一个网站卖东西夏县网站建设
  • 金融服务网站建设内容建设银行个人网上银行登录入口
  • 设计网站推广公司网页制作成都微网站
  • 西安模板建站定制swoole wordpress
  • 济南建设网站需要网站建设学校培训学校
  • 网站怎么用ftp修改网页内容营销型网站开发公司
  • 怎么把源码做网站wordpress文章美化框
  • 网站数据库要多大哪些平台可以免费打广告
  • google广告联盟网站网站建设与推广培训学校
  • 建设网站好公司简介上海企业联系方式
  • 深圳个性化建网站公司上海工商网上办事大厅官网
  • 企业网站做seo如何在平台上推广产品
  • 比较简洁大方的网站sz住房和城乡建设部网站
  • 发布网站需要多大空间建设网站需要哪些设备