题意
对于给定的n (n≤5*10^6),计算代数式 1+1/2+1/3+……+1/n的值
输入数据由多组数据组成。每组数据一行,仅有一个整数,表示n的值
输出保留小数点后12有效数字
思路
直接double算???(会这么简单吗?靠我居然AC了)
笔记
- 感觉这个有歧义:
题目要求是 “小数点后 12位有效数字”
有效数字不是从第一个非0数开始算的吗?
输入4时输出2.083333333333,讲道理这里第一个0不算,小数点后的有效数字应该只有11位。
代码
#include<cstdio>
int main(){
int n;
double sum;
while(scanf("%d", &n) != EOF){
sum = 0;
for(int i=1; i<=n; i++)
sum += 1.0/i;
printf("%.12f\n", sum);
}
return 0;
}