AOJ 480.分数序列求和

162


题目


点击显/隐题目



有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前n项之和.






行1:一个整数n,n∈[1,40]






行1:累加和,精确到小数点后6位








20






32.660261









题解


最后只需要保留6位小数,因此如果使用double即使运算40次误差也不会很大
因此可以直接用 double 存储每个加数,然后计算和

找到规律 新的分数的分子是上一个分子分母和,分母是上一个分子

直接模拟跑一下就行


代码


点击显/隐代码
`cpp 分数序列求和 https://github.com/OhYee/sourcecode/tree/master/ACM 代码备份
/*/
#define debug
#include
//*/
#include
#include
#include
#include
using namespace std;

int main(){
#ifdef debug
freopen("in.txt", "r", stdin);
int START = clock();
#endif
cin.tie(0);
cin.syncwithstdio(false);

int n;
cin >> n;
double a=1.0,b=2.0;
double ans=0;
for(int i=0;ians+=b/a;
b = a + b;
a = b - a;
}
cout << fixed << setprecision(6) << ans << endl;


#ifdef debug
printf("Time:%.3fs.n", double(clock() - START) / CLOCKSPERSEC);
#endif
return 0;
}
发布评论
  • 点击查看/关闭被识别为广告的评论