为了庆祝 NOI 的成功开幕,主办方为大家准备了一场寿司晚宴。小 G 和小 W 作为参加 NOI 的选手,也被邀请参加了寿司晚宴。
在晚宴上,主办方为大家提供了 种不同的寿司,编号 ,其中第 种寿司的美味度为 (即寿司的美味度为从 到 )。
现在小 G 和小 W 希望每人选一些寿司种类来品尝,他们规定一种品尝方案为不和谐的当且仅当:小 G 品尝的寿司种类中存在一种美味度为 的寿司,小 W 品尝的寿司中存在一种美味度为 的寿司,而 与 不互质。
现在小 G 和小 W 希望统计一共有多少种和谐的品尝寿司的方案(对给定的正整数 取模)。注意一个人可以不吃任何寿司。
Constraints
,
Solution
可以观察到选择一种寿司等价于选择它所有的质因子,又因为 以内的数最多只有一个大于 的质因子,小于 的质因子有 个,所以我们可以把每个数包含的质因子压成一个 的状态,单独记录那个大于 的质因子。
然后进行状压 dp ,大于 的质因子相同的部分要放在一起处理,且只能由其中一个人选择。
令 表示小 G 已选择的质因子集合为 ,小 W 已选择的质因子集合为 的方案数;令 表示当前块由小 G / 小 W 选择且小 G 已选择的质因子集合为 ,小 W 已选择的质因子集合为 的方案数,可以得到转移方程:
在一个块开始时初始化 。
在一个块结束时减去被多算的两个人都不选的方案并更新 :
Code
1 |
|