您的位置:首页 > 其它

第六届蓝桥杯大赛个人赛(软件类)校内选拔题目X^X=10

2016-02-28 16:30 411 查看
如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?

显然,这个值是介于2和3之间的一个数字。

请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

注意:只填写一个小数,不要写任何多余的符号或说明。



当然这题使用暴力破解是可以的:

#include<iostream>
#include<iomanip>
#include<math.h>

using namespace std;

int main()
{
double e=2.4;
for(;;e=e+0.0000001)
{
double a=pow(e,e);
if(fabs(a-10)<0.0000001)
cout<<fixed<<setprecision(6)<<e;
}

return 0;
}


但是用二分法可以大大减少计算时间:

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

int main()
{
long double a=2.0,b=3.0,c=1,aa,bb,cc=1.0;
while(fabs(cc)>1e-8)
{
c=(a+b)/2.0;
aa=pow(a,a)-10.0,bb=pow(b,b)-10.0,cc=pow(c,c)-10.0;
if(aa*cc<0) b=c;
else if(bb*cc<0) a=c;
cc=pow(c,c)-10.0;
}
cout<<fixed<<setprecision(7)<<c<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: