第六届蓝桥杯大赛个人赛(软件类)校内选拔题目X^X=10
2018-03-05 20:18
567 查看
如果x的x次幂结果为10,你能计算出x的近似值吗?
显然,这个值是介于2和3之间的一个数字。
请把x的值计算到小数后6位(四舍五入),并填写这个小数值。
注意:只填写一个小数,不要写任何多余的符号或说明。
题上说的很明确,答案是介于2到3之间的,所以暴力枚举没问题
但是这个程序就很慢,我在网上找了一个小哥的另外一种方法,这个就快很多
显然,这个值是介于2和3之间的一个数字。
请把x的值计算到小数后6位(四舍五入),并填写这个小数值。
注意:只填写一个小数,不要写任何多余的符号或说明。
题上说的很明确,答案是介于2到3之间的,所以暴力枚举没问题
#include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { double x = 2.0; for(;x!=3.0;x+=0.00000001)//加的时候尽量位数放大 { if(fabs(pow(x,x)-10) < 0.000001)//这里来限制范围 { cout << fixed<<setprecision(6)<<x<<endl; //最后设置精度 break; } } return 0; }
但是这个程序就很慢,我在网上找了一个小哥的另外一种方法,这个就快很多
二分法
这个方法转载的地址http://blog.csdn.net/Tao_222/article/details/50760580#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; //通过aa,cc,cc的计算,可以将精度进一度提高 //aa,bb和cc想成就可以知道最终结果的大致范围,因为结果越近,相乘就越接近于0,所以这个小哥用0来判断 if(aa*cc<0) b=c; else if(bb*cc<0) a=c; cc=pow(c,c)-10.0; } cout<<fixed<<setprecision(6)<<c<<endl; }
相关文章推荐
- 第六届蓝桥杯大赛个人赛(软件类)校内选拔题目X^X=10
- 第六届蓝桥杯大赛个人赛(软件类)校内选拔题目\Java大学B组\3题 x的x次幂等于10
- 第六届蓝桥杯大赛个人赛(软件类)校内选拔题目\Java大学B组\2题 调和级数
- 第六届蓝桥杯大赛个人赛(软件类)校内选拔题目\Java大学B组\1题
- 2015年 第六届蓝桥杯大赛个人赛省赛(软件类) C/C++大学A组 题目
- 2015年第六届蓝桥杯大赛个人赛决赛(软件类)真题 标题:方格填数
- 第六届蓝桥杯大赛个人赛省赛(软件类) Java 大学B组
- 第六届蓝桥杯大赛个人赛省赛(软件类) Java 大学B组
- 第六届蓝桥杯大赛个人赛省赛(软件类)C++A组 解题报告
- 第六届蓝桥杯大赛个人赛省赛(软件类)真题(C语言A组)
- 第六届蓝桥杯大赛个人赛省赛(软件类)
- 2015年 第六届蓝桥杯大赛决赛(软件类)C/C++大学A组 题目
- 第六届蓝桥杯大赛个人赛省赛(软件类)Java 大学A组
- 第六届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学B组
- 2015第六届蓝桥杯全国软件大赛省赛(预赛)总结
- (2017)第八届蓝桥杯大赛个人赛省赛(软件类) C/C++ 大学A组 题解(第九题)
- 【第七届蓝桥杯大赛个人赛(软件类)决赛B组 棋子换位】
- 第七届蓝桥杯大赛个人赛省赛(软件类)真题 C语言A组 2
- \第七届蓝桥杯大赛个人赛省赛(软件类)3 凑算式 【全排列解法】
- 第七届蓝桥杯大赛个人赛省赛(软件类)java语言B组第三题:凑算式