ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷P3172 [CQOI2015]选数

2022-05-05 22:00:59  阅读:148  来源: 互联网

标签:10 le 选数 P3172 mu ans CQOI2015 aligned sum


洛谷P3172 [CQOI2015]选数

给定正整数 \(N,K,L,H\)。
在 \([L,H]\) 内选 \(N\) 个整数,易知共有 \((H-L+1)^N\) 种方案。
而我们要求的是 \(N\) 个数的最大公约数为 \(K\) 的方案数。对 \(10^9+7\) 取模。

\(1\le N,K\le 10^9,1\le L\le H\le 10^9,H-L\le 10^5\)

令 \(l=\lceil\frac LK\rceil,r=\lfloor\frac HK\rfloor\),显然原问题等价于:
在 \([l,r]\) 内选 \(N\) 个整数,使其最大公约数为 1,求方案数。

记 \(D=r-l\)。
设 \(f_i\) 表示在 \([l,r]\) 内选 \(N\) 个不全相同的整数,使其最大公约数为 \(i\) 的方案数。
Q: 为啥要让 \(N\) 个数不全相同?
A: 这样规定之后,\(\forall i>D\),有 \(f_i=0\),接下来只需考虑 \(f_1\sim f_D\)。

再设 \(F_i\) 表示在 \([l,r]\) 内任选 \(N\) 个不全相同的整数,使 \(i\) 是其公约数的方案数。
记 \([l,r]\) 内 \(i\) 的倍数的个数为 \(S(i)=\lfloor\frac ri\rfloor-\lfloor\frac{l-1}i\rfloor\),易知 \(F_i=S(i)^N-S(i)\)。

接下来可以容斥了:

\[f_i=F_i-f_{2i}-f_{3i}-\cdots \]

从 \(i=D\) 开始倒推即可。
最终的答案是 \(f_1+[l=1]\)。(当 \(l=1\) 时,全选 1 也是一种方案)

时间复杂度 \(O(D\log D)\)。

下面再提供一种纯数论做法。

首先,我们有

\[ans=\sum_{d=1}^r\mu(d)S(d)^N \]

可以大力推式子得到,不详细写了。

然后我们发现 \(r\) 是 1e9 级别的,线性筛跑不动。
其实杜教筛可以,然而 CQOI2015 时杜教筛尚未普及,因此这是不讲武德的。

注意到 \(d>D\) 时,\(S(d)=0\) 或 \(1\),故 \(S(d)^N=S(d)\)。

\[ans=\sum_{d=1}^D\mu(d)S(d)^N+\sum_{d=D+1}^r\mu(d)S(d) \]

把第二个式子差分一下:

\[\sum_{d=D+1}^r\mu(d)S(d)=\sum_{d=1}^r\mu(d)S(d)-\sum_{d=1}^D\mu(d)S(d) \]

考虑化简 \(\sum\limits_{d=1}^r\mu(d)S(d)\)。
\(S(d)\) 的定义是 \([l,r]\) 内 \(d\) 的倍数的个数。所以

\[\begin{aligned} \sum_{d=1}^r\mu(d)S(d) &=\sum_{d=1}^r\sum_{i=l}^r[d|i]\mu(d)\\ &=\sum_{i=l}^r\sum_{d\mid i}\mu(d)\\ &=\sum_{i=l}^r[i=1]\\ &=[l=1] \end{aligned}\]

这样就做完了。还可以再化简整理一下:

\[ans=\sum_{d=1}^D\mu(d)\left(S(d)^N-S(d)\right)+[l=1] \]

线性筛 + 整除分块可以做到 \(O(D+\sqrt D\log N)\) 计算。

其实容斥做法也能得出一模一样的式子,只要做一次莫比乌斯反演即可:

\[F_i=\sum_{i|d}f_d\Longleftrightarrow f_i=\sum_{i|d}\mu(d)F_d \]

\[\begin{aligned}ans&=f_1+[l=1]\\&=\sum_{d=1}^D\mu(d)F_d+[l=1]\end{aligned} \]

标签:10,le,选数,P3172,mu,ans,CQOI2015,aligned,sum
来源: https://www.cnblogs.com/REKonib/p/16226560.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有