杭电 2199 Can you solve this equation?
来源:互联网 发布:盛势网络剧微博 编辑:程序博客网 时间:2024/05/16 23:36
Can you solve this equation?
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : Accepted Submission(s) :
Problem 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.6152
No solution!
类似这种题,都用二分法,书上有详细的解释,我在这简单的说说,二分法数学早学了,并不是所有求根都能用二分法求,本题有它的特殊性,只能求一个范围内有且仅有的唯一根,由两端的正负差异用循环把根逼出来,这就是原理,就是公式复杂了点,代码也就难看了点,慢慢看吧!
代码如下:
#include<stdio.h>#include<math.h>int main (){ int T; double x0,x1,x2,y0,y1,y2,Y; scanf("%d",&T); while(T--) { x1=0;x2=100; scanf("%lf",&Y); y1=8.0*pow(x1,4)+7.0*pow(x1,3)+2.0*pow(x1,2)+3.0*x1+6.0-Y; y2=8.0*pow(x2,4)+7.0*pow(x2,3)+2.0*pow(x2,2)+3.0*x2+6.0-Y; if(y1*y2>=0) printf("No solution!\n"); else { x0=(x1+x2)/2.0; y0=8.0*pow(x0,4)+7.0*pow(x0,3)+2.0*pow(x0,2)+3.0*x0+6.0-Y; while(fabs(y0)>=1e-4) { if(y0==0.0) break; if(y1*y0<0) { x2=x0; x0=(x1+x0)/2.0; y0=8.0*pow(x0,4)+7.0*pow(x0,3)+2.0*pow(x0,2)+3.0*x0+6.0-Y; } if(y2*y0<0) { x1=x0; x0=(x2+x0)/2.0; y0=8.0*pow(x0,4)+7.0*pow(x0,3)+2.0*pow(x0,2)+3.0*x0+6.0-Y; } } printf("%.4lf\n",x0); } } return 0;}
- 杭电 2199 Can you solve this equation?
- 杭电2199 Can you solve this equation?(二分)
- 杭电 HDU ACM 2199 Can you solve this equation?
- hdu杭电2199 Can you solve this equation?【二分】
- 杭电2199Can you solve this equation?(初试二分法)
- 杭电2199 Can you solve this equation?
- 【杭电】[2199]Can you solve this equation?
- 杭电-2199 Can you solve this equation? (简单二分)
- 【杭电2199】Can you solve this equation?
- HDU--杭电--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?
- 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
- 提高编程能力的7条建议
- 关于Ext.grid.Panel显示远程数据无法加载问题的解决
- hibernate之Update
- javaScript-console对象
- OpenMP编程->数据约束
- 杭电 2199 Can you solve this equation?
- LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 【J2EE】JDBC
- Servlet 工作原理解析
- Android实战之小说阅读器,带有水平翻页,记录上次读取页码数
- 杭电2048神、上帝以及老天爷
- 传纸条(一)
- Speed Limit
- 怎样将IP地址转换为数字