记 S(x)S(x)S(x) 为 xxx 的数位和。
竖式加法中每产生一次进位,S(a+b)S(a+b)S(a+b) 就比无进位时减少 999,所以目标等价于让进位尽可能多。若最优方案存在进位,可以循环移动数位,使最低位先产生一次进位,之后连续进位的每一位只需两数位之和至少为 999。枚举 aaa 的最低位数字,给它配对能使和至少为 101010 的最小数字;其余数字从小到大贪心配对满足和至少为 999 的最小数字,未配对数字放到高位。
九种起点分别构造并实际计算数位和,取最优者即可,时间复杂度为 O(∣a∣+∣b∣)O(|a|+|b|)O(∣a∣+∣b∣),空间复杂度为 O(∣a∣+∣b∣)O(|a|+|b|)O(∣a∣+∣b∣)。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户