P1035 级数求和
Loner_Knowledge · · 题解
在算模拟做法(做法1)的时间复杂度时,我想到了一种新的数论做法(做法2),检查了一遍题解发现没有这种做法,于是我写了这篇题解。
1.模拟
这种做法的思路是枚举
代码:
#include<cstdio>
int main() {
int k,n=0;
scanf("%d",&k);
for(double Sn=0;Sn<=k;++n,Sn+=1.0/n);
printf("%d",n);
return 0;
}
空间复杂度
时间复杂度
(如果那个
2.数论(调和级数)
关于调和级数的姿势,点这里。
已知
明显地,
欧拉推导过求调和级数有限多项和的表达式为
我们需要满足
我们只需求满足上式的最小的
关于
代码:
#include<cstdio>
#include<cmath>
const double gamma=0.5772156649;
int main() {
int k,n;
scanf("%d",&k);
n=exp(k-gamma)+0.5;
printf("%d",n);
return 0;
}
空间复杂度
时间复杂度
(因为不知道math.h头文件中的exp函数的时间复杂度,所以不知道时间复杂度)
未解决的问题
1.时间复杂度
2.math.h头文件中的exp函数的时间复杂度为多少?
3.有dalao说
最后,