求方程的根(c语言)(https://wzoi.cc/s/1/1131) - 爱问答

(爱问答)

求方程的根(c语言)(https://wzoi.cc/s/1/1131)

题目描述:

输入m,n,p,a,b,求方程f(x)=mx+nx-px=0在[a,b]内的根。m,n,p,a,b均为整数,且a<b;m,n,p都大于等于1。如果有根,则输出,精确到1E-11;第二行输出此时f(x)的值,如果无方程根,则输出“NO”。

样例输入:

2 3 4 1 2

样例输出:

1.5071265916376433E+0000

3.511049957716228E-012

时间限制:1000ms

空间限制:256MByte


你的这个,只能给你思路及参考程序,不知你的考试用的什么编译器

一般C的输出没有E+0000这样的格式,而只有E+000

另外,因为各个编译器精度不同,不可能完全达到你的结果

以下是我参考网上写的程序

#include <stdio.h>
#include <math.h>
const  double eps = 1e-11;
long a,b,m,n,p;
double  lnn,lnm,lnp;
int flag=0;
void binary(double l, double r)
{
 double x,rs;
if (r-l > 1e-12)
 {
  x = (l + r) / 2.0;
  rs = exp(x*lnm)+exp(x*lnn)-exp(x*lnp);
  if (rs < eps && rs > -eps)
   {
    flag = 1;
    printf("%.16E %.16E",x,rs);
    return;
   }
  if (rs * (m+n-p) > eps)
   binary(x,r);
  else
   binary(l,x);
 }
}
int main()
{

scanf("%ld%ld%ld%ld%ld",&m,&n,&p,&a,&b);
lnm = log(m);
lnn = log(n);
lnp = log(p);
binary(a,b);

if (!flag)
 printf("NO");
return 0;
}


相关标签:c语言方程

下一篇:请问一下大家这个怎么弄?

上一篇:numberstring函数值的含义

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?