题目要求计算给定分数序列的前n项和。
总时间限制: 1000ms 内存限制: 65536kB
有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。
输入有一行:正整数n。
输出有一行:分数序列的和(浮点数,精确到小数点后4位)。
可以printf("%.4lf\n", a)输出浮点数并精确到小数点后4位。
99
160.4849
首先要掌握给定序列的规律,分子分母实际上都是斐波那契数列,这样可以通过循环来实现,主要注意n对应的项数。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, i;
double sum = 0, p = 2, q = 1;
cin >> n;
for(i = 0; i < n; ++i) {
sum += p / q;
p += q;
q = p - q;
}
cout << setprecision(4) << fixed << sum << endl;
return 0;
}
2683.cpp 代码长度:257B 内存:144kB 时间:2ms 通过率:94% 最小内存:144kB 最短时间:0ms
注意精度要求,要采用double型存储,用两个变量分别存储分子分母,每次循环更新。最后添加头文件,按精度要求输出,题目提示是C语言的函数,我们这里采用C++的标准输入输出流。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。