信息学奥赛c++语言:求分数序列和

题目描述

有一个分数序列q1/p1,q2/p2,q3/p3,q4/p4,q5/p5,.... ,其中q(i+1)=qi+pi,p(i+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位。

样例输入 
2
样例输出 
3.5000

代码 

#include
using namespace std;
int main()
{
	double  p=1,q=2,s=0,t,n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		s+=q/p;   // 将当前项 q / p 的值累加到总和 s 中。
		// 以下三行代码用于更新分子和分母的值,以生成下一项分数
		t=q;
		q+=p;
		p=t;	
	}
	printf("%.4lf",s);   // 使用 printf 函数按照指定格式输出总和 s 的值,保留四位小数。
	return 0;
}

 

你可能感兴趣的:(信息学奥赛c++,c++,算法,开发语言,数据结构)