Contents
  1. 1. 题目大意:
  2. 2. 分析:

题目大意:

找x的x次方大于10,求x的近似值,,要求精确到小数点后第6位(有四舍五入)

分析:

  • 用二分查找
  • 区间不是离散的点,而是连续的点,所以不能r=x-1,l=x+1而改为r=x,l=x
  • 注意pow函数里的参数是double型的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstring>
#include <cctype>
#include <climits>
using namespace std;

int main()
{

double l = 1.0, r = 10.0;
double x;
while(1){
x = (l + r) / 2;
double n = pow(x, x);
if(fabs(n - 10) <= 1e-7 && n > 10)//精确到小数点后第7位,且x的x次方大于10
break;
else if(n > 10)
r = x;
else if(n < 10)
l = x;
}
printf("%.7f", x);

return 0;
}
Contents
  1. 1. 题目大意:
  2. 2. 分析: