解题思路
给定五个仅含字符 0 到 9 的字符串 a,b,c,d,e。在进制 x∈[2,10] 中,当且仅当五个串的每一位数字都小于 x 时,x 合法。若在该进制下 A+B=C(按进制 x 加法,值用十进制表示),则令 Sx 为把 d、e 按进制 x 解释后的十进制之和。所有满足条件的 Sx 若完全一致则输出该值,否则输出 baka;一个都不存在时也输出 baka。
算法:先求五个串中的最大数字 mx,合法进制下界为 max(2,mx+1)。对每个候选进制 x:逐位把串转成十进制(v←v⋅x+digit);若 A+B=C,计算 Sx=D+E。用变量记录首次出现的和,之后若出现不同的和则判定不唯一。
扫描结束:至少有一个进制通过且所有和相同则输出该和,否则输出 baka。
复杂度分析