:求分数序列和
总时间限制: 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
提示
最好在程序中使用双精度浮点数(double)记录求得的和。
来源
计算概论05
题解:
首先找规律 就会发现与斐波那契数列有关,用迭代法写代码
注意:一开始写的时候数据溢出了,所以有负的,不用long long。只需n为int
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int n;
double tmp;
double p,q;
q=1;p=2;
double m,sum=0;
cin>>n;
for(int i=0;i<n;i++)
{m=(p*1.0)/(q*1.0);
tmp=p;
p=q+p;
q=tmp;
sum+=m;
}
printf("%.4lf\n",sum);
return 0;
}