//输入n,输出1+1/2+1/3+…+1/N的和(保留6位小数)
#include<bits/stdc++.h>
using
namespace
std;
int
main()
{
int
a;
double
s=0;
cin>>a;
for
(
int
i=1;i<=a;i++)
s+=(
double
)(1*1.0/i);
cout<<fixed<<setprecision(6)<<s<<endl;
return
0;
}
以上有点弱鸡,接下来加一个nb点的
#include<cstdio>
#include<cmath>
double r=0.5772156649;
int main()
{
int k,n;
scanf("%d",&k);
n=exp(k-r)+0.5;
printf("%d",n);
return 0;
}
r是欧拉常数,1/1+1/2+1/3+...+1/n是调和级数,发散的,公式就是ln(n+1)+r
让我证明是不可能的,我那么cai
拿过来直接用就好了