的做法:

显而易见的结论:

质因子最多的一个数一定能写成的形式

因为如果有的质因子,那么可以用替代。

如果,那么可以用替代。

所以在搜索的某一步:

使得不变的数是一样的;

使得的数是一样的;

使得的数是一样的。

搜索的时候放在一起就可以了。

此时可以写出的代码

第一步优化:

表示选了个数,当前的方案数;

表示中有多少个数的因子包含

若填完这个位置不变:

若填完这个位置

若填完这个位置

使用记忆化搜索可以使得时间复杂度为

但是我们还可以优化:

第二步优化:

考虑优化记忆化搜索:

可以发现当前还没填的数,如果填了不变的话,那么这个数填在之后任意一个位置都是可以的,直接用组合数计算即可,然后进入下一层。

最终复杂度:

阶乘预处理

逆元预处理

记忆化搜索

总时间复杂度

可以过的数据。

代码: