信息
- ID
- 1411
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 149
- 已通过
- 3
- 上传者
专门出的一个搜索题。
我们考虑dfs(i,x,y,now)。
此处i表示该考虑第i个质数的归属了,当前分别是x,y,当前一共有now个不同的质因子。
那么下一次dfs肯定是dfs(i+1,x×p[i]t,y,now+1),或者是dfs(i+1,x,y×p[i]t,now+1),或者是dfs(i+1,x,y,now)。
需要注意的是,这个过程中如果写法不太好,很容易乘爆long long,要么用int128,要么用除法来保证不会乘爆,比如if (a*b<=n)
可以改写乘if (a<=n/b)
。
但这么做会常数巨大,可以考虑分别用两个long long去存当前x,y乘以那个质数的幂以后的结果,如果超了n就当n+1即可。这样全程不用除法。
剪枝的话很容易想到,就是假设后面都用第i,i+1,...,种质数,加上当前的now都凑不够目前的best,那就直接不用搜了。