蓝桥杯 7-2求arccos值 C++算法提高 HERODING的蓝桥杯之路

    技术2022-07-14  78

    资源限制 时间限制:10.0s 内存限制:256.0MB 问题描述   利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1],返回值为[0, PI]。要求结果准确到小数点后5位。(PI = 3.1415926)   提示:要达到这种程度的精度需要使用double类型。 样例输入 0.5 样例输出 0.5 1.04720

    解题思路: 求arccos的过程就是求cos的逆过程,也就是x未知,cosx已知求x,那么我们可以采用二分法试出来,对未知的x进行cos与输入的值相减,如果逼近0,说明未知的x的值就是此时试出来的值,代码如下:

    #include<bits/stdc++.h> #define PI 3.1415926 using namespace std; int main(){ double result, l, r, x; cin >> x; l = 0; r = PI; result = (l + r) / 2; while(fabs(cos(result) - x) > 0.000000000001)//二分法 { if(cos(result) - x > 0){ l = result; }else{ r = result; } result = (l + r) / 2; } cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(5);//限制输出位数 cout << result; return 0; }
    Processed: 0.009, SQL: 9