CF1981C 题解
吐槽:恶心题,赛后才调出来一发过/tuu。
友情提示:这场比赛 CF 有中文官方题解哦!这题使用中文版官方题解 LCA 做也是很好的一种方法。
思路
首先不难发现,一个数先乘 后除 会得到原数。若 和 间有 个 ,则我们可以对 先除后乘得到 ,最后浪费多余的 。
首先我们当然贪心考虑最少的乘除次数,那时, 被除后的“渣渣” 的二进制是 的前缀,此时只要从前缀后一位开始,逐位考虑是否需要在乘 后加 。此时,如果 不够用了或剩下的 是奇数,则无解。
最后考虑前缀 和后缀 。首先整个数列都是 特判一下, 交替输出就行。其次前后缀 处理方法都一样,可以对最前(最后)的非 进行 倍交替输出就可以。
代码过长,故放个 CF 提交记录链接(含代码)。

浙公网安备 33010602011771号