hdu 2199 二分法求方程的根
2016-09-22 22:55
141 查看
D - Can you solve this equation?
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100;
Now please try your lucky.
Input
The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);
Output
For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.
Sample Input
Sample Output
思路:没什么好说的,直接开精度二分暴力,注意没有解得条件
#include<stdio.h>
#include<math.h>
#define e 0.00000001
#define g(x) 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6//直接定义define即可;
double y;
int main()
{ int t;
double l,mid,r;
scanf("%d",&t);
while(t--)
{
scanf("%lf",&y);
if(y<g(0)||y>g(100))
{ printf("No solution!\n");
continue;
}
l=0;
r=100;
while(r-l>e)
{ mid=(l+r)/2;
if(g(mid)>y)
r=mid;
else
l=mid;
}
printf("%.4lf\n",l);
}
return 0;
}
可能有些人不理解二分,我们这里所求的二分默认只能求出有解的那种情况,不需要去判断是否有根
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status
Description
Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100;
Now please try your lucky.
Input
The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);
Output
For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.
Sample Input
2 100 -4
Sample Output
1.6152No solution!
思路:没什么好说的,直接开精度二分暴力,注意没有解得条件
#include<stdio.h>
#include<math.h>
#define e 0.00000001
#define g(x) 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6//直接定义define即可;
double y;
int main()
{ int t;
double l,mid,r;
scanf("%d",&t);
while(t--)
{
scanf("%lf",&y);
if(y<g(0)||y>g(100))
{ printf("No solution!\n");
continue;
}
l=0;
r=100;
while(r-l>e)
{ mid=(l+r)/2;
if(g(mid)>y)
r=mid;
else
l=mid;
}
printf("%.4lf\n",l);
}
return 0;
}
可能有些人不理解二分,我们这里所求的二分默认只能求出有解的那种情况,不需要去判断是否有根
相关文章推荐
- hdu 2199 二分法求单调函数方程的解
- HDU 2199 Can you solve this equation? (二分法解方程)
- hdu 2199 解方程(二分法)
- NYOJ 503 & HDU 2199 解方程(二分)
- hdu 2199 二分解方程
- 【杭电2199】找方程的解 (二分法)
- 【二分解方程】hdu 2199 Can you solve this equation?
- HDU 2199 Can you solve this equation? 二分求方程解
- hdu 2199 二分法-Can you solve this equation?
- HDU 2199 Can you solve this equation?(二分法求近似解)
- hdu 2199 Can you solve this equation?(二分法)
- HD 2199 Can you solve this equation?【二分法求方程的解】
- HDU-2199 二分法
- 二分法解题--HDU-2199 -- Can you solve this equation?
- HDU 2199(二分求方程解)
- 二分法的应用 HDU - 2199 Can you solve this equation?
- hdu 2199 Can you solve this equation?(二分查找方程的根)
- hdu 2199 java 二分法
- NYOJ 503 & HDU 2199 解方程(二分)
- HDU-2199 二分搜索解方程