算法提高 7-2求arccos值
来源:互联网 发布:js点击加号输入框加一 编辑:程序博客网 时间:2024/06/05 04:39
算法提高 7-2求arccos值
时间限制:10.0s 内存限制:256.0MB
提交此题
问题描述
利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1],返回值为[0, PI]。要求结果准确到小数点后5位。(PI = 3.1415926)
提示:要达到这种程度的精度需要使用double类型。
样例输入
0.5
样例输出
数据规模和约定
-1 <= x <= 1, 0 <= arccos(x) <= PI。
原本以为这是一道水题,用了暴力法,然后从0开始,因为看到题目后面说精度要达到小数点后五位,于是我把第增量尽可能小,每次增加0.000001,然后在while循环中用fabs函数判断该数的cos值是否和输入的值相近,如果是,则可以认为这时候已经遍历到正确值附近,输出!
到这里一切都看似很正常对吧?可是当我提交到lanqiao练习系统时,发现只有33分,于是我在键入其他数据进行测试,发现只有输入0.5时候,结果是相符的,如果输入-1,得出来的是3.14018,而题目中提供的PI是3.1415926,正确应该输出3.14018。下面我贴出我原来这道题的代码,至今我想不明白,我代码中哪个地方出错了,如果有哪位大神看的出来,麻烦指示以下!
#include<iostream>#include<math.h>#include<cstdlib>#include<iomanip>using namespace std;int main(){double x;cin>>x;double i=0;while(fabs(cos(i)-x)>0.000001){ i+=0.000001;}cout<<fixed<<setprecision(5)<<i;return 0; } //-1 //3.14018
然后我Google了一下,发现别人的做法出乎意料的简便,直接无视题目中的cos函数和fabs函数,直接使用标准库中的acos函数去求,惊呆了,像我们这种孤陋寡闻的,都不知道标准库中有这么方便的函数,还傻乎乎的被题目骗去使用cos函数,我觉得这其实像是一种作弊,或许叫做小技巧。话不多说,贴出这段代码出来。
#include<stdio.h>#include<math.h>int main(){ double x; scanf("%lf",&x); printf("%.5lf",acos(x));}
看了这份代码,我觉得我有两点收获是:
- 要了解Math.h中基本函数的用法,不懂得使用就吃亏了,C 标准库- <math.h>
- C语言有比c++函数有一个很大优势就是在输入和输出方面,可以很便捷的进行输入输出格式化控制,比如你想输出一个双精度的小数点后五位,您可以printf(“%.5lf”,a);当然我这么说只是很浅显的说法,更加详细可以参考这篇文章:C语言输出函数(printf)和输入函数(scanf)
- 算法提高 7-2求arccos值
- 算法提高 7-2求arccos值
- 算法提高 7-2求arccos值
- 算法提高 7-2求arccos值
- 算法提高 7-2求arccos值
- 【蓝桥杯】算法提高 7-2求arccos值
- 算法提高 ADV-222 7-2求arccos值
- 蓝桥杯 算法提高 7-2求arccos值
- 算法提高 3-2求存款
- 算法提高 求最大值
- 算法提高 求最大公约数
- 算法提高 求最大值
- 算法提高 求最大值
- 蓝桥杯 算法提高 求最大值
- 蓝桥杯 算法提高 求最大值
- 算法提高 求最大值 DP
- 蓝桥杯 ADV-213 算法提高 3-2求存款
- 蓝桥杯 ADV-92 算法提高 求最大公约数
- http协议以及Servlet
- 分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型
- python中xgboost说明文档
- HTTP Cookie
- Vue2 向Vue.extend传参-propsData属性
- 算法提高 7-2求arccos值
- BZOJ 1426: 收集邮票 期望
- leetcode 154. Find Minimum in Rotated Sorted Array II
- Leetcode-Jump Game
- df
- 修改最大线程数的配置
- Android静默安装实现方案
- Eclipse中的创建maven项目,无法添加src/main/java等source folder
- 数字证书原理