调和级数前n项和

调和级数求和公式:1+1/2+1/3+1/4+...+1/n=(㏑n)+γ;
n不太大时直接循环解决:
n太大时用ln(n)+Y(Y=0.57721566490153286060651209)
hdu 4986
#include
#include
using namespace std;
typedef double LD;
int n;
const int N(1e5+1);
LD f[N];
int main(){
    for(int i=1;i<N;i++)
        f[i]=f[i-1]+1.0/i;
    while(~scanf("%d",&n))
    {
        if(n>=N)printf("%.4lf\n",0.57721566490153286060651209+log(n));
        else printf("%.4lf\n",f[n]);
    }
    return 0;

你可能感兴趣的:(调和级数前n项和)