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

資源限制
時間限制: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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章