CF1981C 题解
吐槽:恶心题,赛后才调出来一发过/tuu。
友情提示:这场比赛 CF 有中文官方题解哦!这题使用中文版官方题解 LCA 做也是很好的一种方法。
思路
首先不难发现,一个数先乘 后除 会得到原数。若 和 间有 个 ,则我们可以对 先除后乘得到 ,最后浪费多余的 。
首先我们当然贪心考虑最少的乘除次数,那时, 被除后的“渣渣” 的二进制是 的前缀,此时只要从前缀后一位开始,逐位考虑是否需要在乘 后加 。此时,如果 不够用了或剩下的 是奇数,则无解。
最后考虑前缀 和后缀 。首先整个数列都是 特判一下, 交替输出就行。其次前后缀 处理方法都一样,可以对最前(最后)的非 进行 倍交替输出就可以。
代码过长,故放个 CF 提交记录链接(含代码)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?