可以提供两份代码:
```cpp
#include<bits/stdc++.h>
#define ll long long
#define mxn 100000003
#define md 1000000007
#define pb push_back
#define mkp make_pair
#define ld long double
#define umap unordered_map
#define rep(i,a,b) for(ll i=a;i<=b;++i)
#define rept(i,a,b) for(ll i=a;i<b;++i)
#define drep(i,a,b) for(ll i=a;i>=b;--i)
#define pq priority_queue
using namespace std;
ll n=5e9;
ld s1,s2;
signed main(){
rep(i,1,n){
s1+=(ld)(n/i)*(n/i+1)/2*i;
s2+=n/i;
}
printf("%.9Lf",(ld)s1/s2/n);
return 0;
}
```
```cpp
#include<bits/stdc++.h>
#define ll long long
#define mxn 50000003
#define md 1000000007
#define pb push_back
#define mkp make_pair
#define ld long double
#define umap unordered_map
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define rept(i,a,b) for(int i=a;i<b;++i)
#define drep(i,a,b) for(int i=a;i>=b;--i)
#define pq priority_queue
using namespace std;
int n,k,p;
ll c[mxn];
ld s1,s2;
signed main(){
n=1e7,k=1,p=4;
rep(i,1,pow(n,1.0/k)){
int x=pow(i,k);
for(int j=x;j<=n;j+=x)c[j]+=i;
}
rep(i,1,n)s1+=(ld)i*pow(c[i],p),s2+=(ld)pow(c[i],p);
printf("%.9Lf",(ld)s1/s2/n);
return 0;
}
```
by zifanwang @ 2024-04-26 18:25:40
纠正一下:找规律部分和第二份代码 $k,p$ 反了。
by zifanwang @ 2024-04-26 18:29:42
@[zifanwang](/user/329857) $A\to B$ 指的是 $A/B\to 1$ 还是 $A-B\to 0$?
by MatrixGroup @ 2024-04-26 18:30:37
@[Anomynous](/user/483824) 是渐近值,$A/B\to 1$,你可以理解为复杂度
by zifanwang @ 2024-04-26 18:32:40
可能还不太准确
by zifanwang @ 2024-04-26 18:38:05
知乎通道:<https://www.zhihu.com/question/654193775>
by zifanwang @ 2024-04-30 17:35:09