【FOJ】Problem 1058 粗心的物理学家

Problem 1058 粗心的物理学家.

题意

对于给定的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;
}
发布了28 篇原创文章 · 获赞 0 · 访问量 332

猜你喜欢

转载自blog.csdn.net/qq_44531167/article/details/105105266