求分数序列和(信息学奥赛一本通-1078)
【题目描述】
有一个分数序列 q1p1,q2p2,q3p3,q4p4,q5p5,.... ,其中qi+1=qi+pi, pi+1=qi,p1=1,q1=2。比如这个序列前6项分别是21,32,53,85,138,2113。求这个分数序列的前n项之和。
【输入】
输入有一行,包含一个正整数n(n≤30)。
【输出】
输出有一行,包含一个浮点数,表示分数序列前n项的和,精确到小数点后4位。
【输入样例】
2
【输出样例】
3.5000
【题解代码】
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int p1 = 1;
int q1 = 2;
double sum = q1*1.0 / p1;
for (int i = 2; i <= n; i++)
{
int q = q1 + p1;
int p = q1;
p1 = p;
q1 = q;
sum += q1 * 1.0 / p1;
}
printf("%.4lf", sum);
return 0;
}