Problem 1001
2016-04-07 22:24
169 查看
简单题意: 输入一个数Y,如果有一个数x(0<x<=100),使得8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,误差在1e-6以内,
解题思路:
用二分法求解,然后利用搜索求得最终解。
代码如下:
#include<iostream>
#include<stdio.h>
#include<iomanip>
#include<cmath>
using namespace std;
double fun(double x)
{
return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6 ;
}
double m(double x,double z, double y)
{
double mid;
while((y-z)>1e-10)
{
mid=(z+y)/2;
if(fun(mid)<x)
z=mid+1e-10;
else
y=mid-1e-10;
}
return mid;
}
int main()
{
int n;
double a;
cin>>n;
while(n--)
{
cin>>a;
if(a<6||a>807020306||fabs(m(a,0,100))<1e-4)
cout<<"No solution!"<<endl;
else
cout<<fixed<<setprecision(4)<<m(a,0,100)<<endl;
}
return 0;
}
解题思路:
用二分法求解,然后利用搜索求得最终解。
代码如下:
#include<iostream>
#include<stdio.h>
#include<iomanip>
#include<cmath>
using namespace std;
double fun(double x)
{
return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6 ;
}
double m(double x,double z, double y)
{
double mid;
while((y-z)>1e-10)
{
mid=(z+y)/2;
if(fun(mid)<x)
z=mid+1e-10;
else
y=mid-1e-10;
}
return mid;
}
int main()
{
int n;
double a;
cin>>n;
while(n--)
{
cin>>a;
if(a<6||a>807020306||fabs(m(a,0,100))<1e-4)
cout<<"No solution!"<<endl;
else
cout<<fixed<<setprecision(4)<<m(a,0,100)<<endl;
}
return 0;
}
相关文章推荐
- Hbase使用
- Android:inputType常用取值
- IAccessiable的学习和使用
- 对象存储
- 直接插入排序
- Java中Object有哪些公共类
- 吴超老师课程--HBASE的集群安装
- Eclipse常用配置及常用快捷键
- D3.js 学习( 一)
- 以c++的方式实现单链表
- C++四则运算代码
- LeetCode 27. Remove Element
- 笔试题(2016.4.7)
- 解决s:iterator嵌套s:radio的传值问题
- ServletContext的讲解和使用
- alibaba druid数据源配置参考
- JavaScript基础教程02好神奇的变量var
- initialize
- jvm参数
- 第二十三章 命令模式