当前位置:   article > 正文

乐鑫笔试题-----开根号_开根号 笔试

开根号 笔试

类似https://blog.csdn.net/SHAOYEZUIZUISHAUI/article/details/106452586


 

 


  1. //注意审题:不用任何数学库函数,所以我们只用加减乘除
  2. #include <iostream>
  3. using namespace std;
  4. //二分搜索求开n次方
  5. //double epr = 10E-14;
  6. #define epr 10E-14
  7. double Mysqrt(double m, int n)
  8. {
  9. //double 十进制小数点后十五位精确
  10. double left = 0;
  11. double right = m;
  12. //必须保证第一次while循环可以进去
  13. double mid = 0;
  14. double temp=m;
  15. while (mid - temp>epr ||mid - temp<-epr)
  16. {
  17. temp = m;
  18. mid = left + (right - left) / 2;
  19. //m除以mid n-1次,比如求开方,就除mid一次,再和mid比较
  20. for (int i = 0; i<n-1; i++)
  21. temp = temp / mid;
  22. //二分
  23. if (mid>temp)
  24. //因为是保留小数点12位,所以,right=mid而非二分查找的mid+1
  25. right = mid;
  26. else
  27. left = mid;
  28. }
  29. return temp;
  30. }
  31. int main()
  32. {
  33. double m;
  34. int n;
  35. while (cin >> m >> n)
  36. {
  37. //输出13位有效数字,前提是有足够多的有效数字
  38. //cout.precision(13);
  39. //cout << Mysqrt(m, n);
  40. printf("%.12lf\n",Mysqrt(m,n));
  41. }
  42. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/1018432
推荐阅读
相关标签
  

闽ICP备14008679号