您的位置:首页 > 其它

HDU 2199 Can you solve this equation?

2011-03-21 21:07 288 查看
这题开始差点把他做一元二次方程给解了,后面用到POW时才有感觉,后来想得好复杂,四元一次怎么解啊 ,最后好玩把0-100内所有的函数值全部打出来,竟发现左边的函数在0-100内是单调递增的,看到这儿各位该知道了吧,直接二分;还有判断循环要用函数值,不要用自变量,用自变量要精确到10的-6次方

#include<stdio.h>
#include<math.h>
double x,y;
double f( double x )
{
return  8 * pow( x,4 ) + 7*x*x*x + 2*x*x + 3*x + 6;
}
int main( )
{
int t;
scanf( "%d",&t );
double min, max;
while( scanf( "%lf",&y ) != EOF,t-- )
{
min = f( 0 );
max = f( 100 );
if( y > max || y < min )
printf( "No solution!\n" );
else
{
double a = 0.0,b = 100.0,mid = 50;
double e1 = f( a ),e2 = f( mid ),e3 = f( b );
while( fabs( e1 - e2 ) > 0.0001 )
{
if( e2 > y )
{
b = mid;
e3 = e2;
mid = ( a + b ) / 2;
e2 = f( mid );
}
else
{
a = mid;
e1 = e2;
mid = ( a + b ) / 2;
e2 = f( mid );
}
}
printf( "%.4lf\n",mid );
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: