忘打了QAQ
E.Decryption
题意:
给你一个合数$n$,要你自己得出其所有大于1的因子,然后将这些因子排成一个环,使得任意两个相邻的数都不互质,若无法得到,可以花费$1cost$,在两个互质的数中间插入他们的$lcm$,问怎样排列才能使得$cost$最小。
题解:
由唯一分解定理我们可以知道,对于任意一个合数$n$,有:
$n=p_1^{c_1}p_2^{c_2}p_3^{c_3}\dots p_k^{c_k}$
则我们只需要把数排成如下形式即可:
$p_1\dots p_1\times j\dots p_1\times p_2\ p_2\dots p_2\times j\dots p_2\times p_3\ p_3\dots p_{k-1}p_{k}\ p_k\dots p_k\times j \dots$
注意一下只有三个因子的,如果较小的两个因子互质要输出$1$,否则输出$0$。
其他的情况只要构造即可,无论如何都可以构造成两两不互质。
ps:代码比较繁琐,感觉很多地方可以优化掉
AC代码:
1 | //I am so vegetable |
- 本文作者: baddog
- 本文链接: https://katoli.github.io/2020/09/24/Codeforces-Round-671-Div-2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!