题目链接

题目描述

蒜术师有一个分数序列 q1/p1, q2/p2, q3/p3, q4/p4, q5/p5,… ,其中qi+1= qi+ pi, pi+1=qi, p1= 1, q1= 2。比如这个序列前6项分别是2/1, 3/2, 5/3, 8/5, 13/8, 21/13。求这个分数序列的前n项之和。

输入格式
输入有一行,包含一个正整数n(n <= 30)。

输出格式
输出有一行,包含一个浮点数,表示分数序列前n项的和,精确到小数点后4位。

Sample Input

2

Sample Output

3.5000

思路

根据题目所给的递推公式,计算分数序列和,可以用两个变量作为分子和分母,每次计算进行递推。注意保留小数点后四位。

C++代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	while(cin >> n)
	{
		double a = 1.0, b = 1.0, sum = 0.0, c;
		while(n--)
		{
			c = a + b;
			a = b;
			b = c;
			sum += 1.0 * b / a;
		}
		printf("%.4lf\n", sum);
	}
	return 0;
}

更多推荐

C/C++编程学习 - 第16周 ② 求分数序列和