PE 441

来源:互联网 发布:淘宝怎么申请售后退款 编辑:程序博客网 时间:2024/05/18 00:29


#include <cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<ctime>#include<cmath>#include<cstdlib>#include<cstdio>#define D doubleusing namespace std;const int n = 10000000,N = n + 20;D f[N],g[N],t[N];int miu[N],prime[N];bool v[N];void get_prime(){int tot = 0;miu[1] = 1;for (int i = 2;i < N;i ++){if (!v[i]){prime[tot ++] = i;miu[i] = -1;}for (int j = 0;j < tot && i * prime[j] < N;j ++){v[i * prime[j]] = true;if (i % prime[j] == 0) break;else miu[i * prime[j]] = -miu[i];}}}D cal(int d){D ret = 0;for (int i = d,j;i <= n;i = j + 1){j = min(n,d * (i / d + 1) - 1);ret += (j - i + 1) * t[i / d] - (j - i) * g[i / d];}return ret;}int main(){get_prime();f[1] = 1;for (int i = 2;i <= n;i ++){f[i] = f[i - 1] + 1.0 / i;g[i] = f[i - 1] / i - (i & 1 ? 0 : 2.0 / i / i);t[i] = t[i - 1] - g[i - 1] + f[i - 1] / i;}D ans = 0;for (int i = 1;i <= n;i ++)ans += (D) miu[i] / i / i * cal(i);printf("%.4f",ans);return 0;}


0 0
原创粉丝点击