首页 > 试题广场 >

解方程

[编程题]解方程
  • 热度指数:637 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛能作为一个学霸,非常擅长解方程。
有一天,他拿到了一个方程:

牛能当然一下子就解出了这个方程。但他想考考聪明的你,这个方程的解的多少?

输入描述:
三个正整数  


输出描述:
如果解存在,请输出方程的解x的值,若你和正确答案的误差不超过  ,则认为你的答案正确。
如果解不存在,则输出
示例1

输入

3 5 1

输出

1.00000000000000
头像 小鸣壹号
发表于 2020-05-18 09:24:11
用牛顿迭代法令f(x)=x^a+blnx-c可以求出xn+1 = xn - f( xn ) / f'( xn )然后只要令初始x为一个大于0的数就行 #include<stdio.h> #include<math.h> int main(){ int a,b,c; 展开全文
头像 Emcikem
发表于 2020-05-18 09:52:47
二分模板题定义: 函数一个单调递增函数,那么直接二分考虑到有可能没有解,那就用第二种二分解法,for循环 二分左区间为l,右区间为r然后当时,太小了,l = mid否则太大了,r = mid 此处针对特别毒瘤的数据,加入几何的double处理 #include <iostream> #i 展开全文
头像 昨晚梦见发财了
发表于 2020-05-18 11:52:57
二分求解 因为Math.log用成了Math.log10而wa了10发。 注意一下当精度特别高的时候就跳出循环 否则会tle import java.util.*; import java.math.*; import java.io.IOExc 展开全文
头像 精神病科黄主任
发表于 2020-05-22 18:17:33
容易发现左边的那个函数一定单调递增。当x=1时候,函数质一定是1,如果x小于1,函数值一定是负数,而右边的c是大于等于1的,所以其实是一定有解的那么二分就好了。考虑到精度问题。所以可以考虑限定次数来二分答案。。 #include<bits/stdc++.h> using namespac 展开全文
头像 Bernard5
发表于 2020-05-17 23:39:56
没什么可说的,记录一下写法,以及long double这种精度 引用自兰子大佬 很容易发现左边是一个单调增的函数,所以二分求解即可。值得注意的是如果用double可能出现tle的情况(实测double精度有问题,导致后面无限不动)。解决方法有两种,一种是换long double,另外一种是进行足够 展开全文