$\gcd$ 的性质.
首先可以转化为在 $[\lceil \frac L k\rceil,\lfloor \frac R k\rfloor]$ 中取出 $n$ 个数,满足它们的 $\gcd$ 为 $1$ .
接下来的 $L,R$ 都是转化后的.
若取的 $n$ 个数不完全相同,那么它们的 $\gcd$ 一定会 $\le R-L$ .
计算出 $f(i)$ 表示取出 $n$ 个数,它们的 $\gcd$ 是 $i$ 的倍数的方案数,这个 $i$ 只用枚举到 $R-L$ .
再从大到小将 $f(2i),f(3i)\dots$ 减掉,得到的 $f(i)$ 就表示 $\gcd$ 恰好是 $i$ 的方案数了.
时间复杂度 $O((R-L+1)\cdot \log (R-L+1))$ .
1 | //%std |