说句闲话,提两个没人说的点
查看原帖
说句闲话,提两个没人说的点
589916
August_Light楼主2024/1/20 13:17

定义 Q(n)=∑i=1⌊n⌋μ(i)⌊ni2⌋Q(n) = \sum\limits_{i=1}^{\lfloor \sqrt n \rfloor} \mu(i) \left\lfloor \dfrac n {i^2} \right\rfloor,即 [1,n][1,n] 中无平方因子数的个数。

  1. 计算 Q(n)Q(n) 可以使用二次数论分块,将复杂度从 O(n)O(\sqrt n) 优化到 O(n3)O(\sqrt[3] n)。
// summu 为莫比乌斯函数前缀和

ll Q(ll n) { // [1, n] 中无平方因子数的个数
    ll ans = 0;
    for (ll l = 1, r; l <= sqrt(n); l = r + 1) {
        ll val = n / (l * l);
        r = sqrt(n / val);
        ans += val * (summu[r] - summu[l-1]);
    }
    return ans;
}

(浅色调 的题解提到了这一内容,但是给出了错误的时间复杂度)

  1. lim⁡n→∞Q(n)n=6π2\lim\limits_{n \to \infty} \dfrac {Q(n)} n = \dfrac 6 {\pi^2} 即 Q(n)∼6π2nQ(n) \sim \dfrac 6 {\pi^2} n。

所以此题答案约为输入的 π26\dfrac {\pi^2} 6 倍。

这个数约为 1.6449340671.644934067,第一篇题解中的二分上限 16449340811644934081 就差不多是这个数。

这也是 P8883 幻想中成为原神 的结论。

参考资料:https://zhuanlan.zhihu.com/p/590842929

2024/1/20 13:17
加载中...