本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
作者
张彤彧
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
编译器 (1)
C (gcc)
#include <stdio.h>
int main(void) //如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
int n;
scanf("%d",&n); // &
int i;
double a=1.0,b=1.0,temp,sum=0.0; //“题目保证计算结果不超过双精度范围”——当n过大时,a,b,temp定义为int型会溢出。
for(i=1;i<=n;i++){
temp=a;
a=a+b;
b=temp;
sum+=a/b;
}
printf("%.2f\n",sum); // \n
return 0;
}