每日一练1
每日一练1
1.圆的面积
Description
给定圆的半径r,求圆的面积。
Format
Input
输入包含一个整数r,表示圆的半径。
Output
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
Samples
输入数据 1
1 | 4 |
输出数据 1
1 | 50.2654825 |
Limitation
1s, 1024KiB for each test case.
解法:
- 这里用到了一个重要的公式:acos();
- acos()函数是cmath报头的库函数,它被用于查找给定数的反余弦的主值,它接受一个数字(x)和返回x的以弧度为单位的反余弦的主要值。
- 注意:值( x )必须介于-1到+1之间,否则它将返回域错误( nan ).
- acos(-1)是精准的π值
例如:
1 | Input: |
1 |
|
2.Fibonacci数列
Description
Fibonacci数列的递推公式为:F_n = F_{n-1} + F_{n-2}F**n=F**n−1+F**n−2
已知: F_1 = = F_2 = 1F1==F2=1
Format
Input
输入包含一个整数n。(1<=n<=10000000)
Output
输出一行,包含一个整数,表示F_nF**n除以10007的余数。
Samples
输入数据 1
1 | 10 |
输出数据 1
1 | 55 |
hint
在本题中,答案是要求F_nF**n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F_nF**n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
Limitation
1s, 1024KiB for each test case.
解法
当使用正常方法时会导致超时oj无法通过如:
1 | //普通的递归: |
优化思想:
在第五项斐波那切数列,首先得根据第一项和第二项算出第三项和第四项的数,而第三项先要算出第一项和第二项,第四项需要算出第二项和第三项,优化的思想在于如何避免重复的计算: 既然之前已经计算过那只需保存起来下次直接用就可以了
1 |
|
或:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小破仁のBlog!
评论