加号放哪里 给定任一个正整数 N,我们要从它开始,经过一系列操作得到一个个位数。操作方法是在 N 的各位数字之间放置一个加号,然后执行这个加法计算,得到一个新的数字 N1,再对 N1 执行同样操作,得到 N2 …… 以此类推,直到最后得到的数字只有 1 位,则停止。 例如我们从 N=1234567890 出发,在 5 和 6 之间放置加号,计算 12345+67890=80235;然后在 0 和 2 之间放置加号,计算 80+235=315;然后在 1 和 5 之间放置加号,计算 31+5=36;最后在 3 和 6 之间放置加号,得到 3+6=9 而停止。这样我们通过 4 次计算得到了一个个位数 9。 本题就请你为任一给定的正整数计算:最少需要多少次加号放置可以得到个位数? 注意:加号必须放置在两个数字之间,不可放置在数字的首尾。 时间限制:7000 内存限制:65536 输入 输入在一行中给出一个正整数 n(≤ 1020)。 输出 在一行中首先输出将输入的整数变为个位数,需要放置加号的最少次数;随后输出最后得到的那个个位数。如果最后得到的个位数不唯一,输出最小的那个。 数字间以 1 个空格分隔,行首尾不得有多余空格。 样例输入 1234567890 样例输出 3 9 提示 样例解释: 最优划分是: 1. 12345678+90=12345768 2. 1234+5768=7002 3. 7+002=9
正确答案:参考程序(Python):加号放哪里。对数字串求最少放置加号次数到个位数。DFS/BFS在各位间插加号,记录步数。最后一位不唯一取最小。样例1234567890→3 9。核心:数字拆分加号最短路。
试卷来源:202406 青少年等级考试C/C++真题三级