题库首页 › 蓝桥杯大赛(C语言) › 题目 14667

表达式求值 题目描述: 给定一个仅包含数字 1 到 9 的字符串 S,请在 S 中分别插入 1 个加号(+)、2 个加号。 注: 1)加号不能出现在 S 中第一位数字的前面或者最后一位数字的后面; 2)两个加号的位置不能相邻。 插入加号后的字符串可以看做是一个加法表达式,请找出所有可能出现的表达式,并输出所有表达式结果的总和。 例 1:S = "1234";分别在字符串 "1234" 中插入 1 个加号、2 个加号,插入加号的表达式如下: 1)当插入 1 个加号时,表达式有 1 + 234、12 + 34、123 + 4,计算结果依次为 235、46、127; 2)当插入 2 个加号时,表达式有 1 + 2 + 34、1 + 23 + 4、12 + 3 + 4,计算结果依次为 37、28、19; 这些结果的总和为 492(235 + 46 + 127 + 37 + 28 + 19)。 例 2:S = "111",分别在字符串 "111" 中插入 1 个加号、2 个加号,插入加号的表达式如下: 1)当插入 1 个加号时,表达式有 1 + 11,11 + 1,计算结果依次为 12、12; 2)当插入 2 个加号时,表达式有 1 + 1 + 1,计算结果为 3; 这些结果的总和为 27(12 + 12 + 3)。 输入描述: 输入一个仅包含数字 1 到 9 的字符串 S(3≤S的长度≤15)。 输出描述: 输出一个整数,表示所有可能出现的表达式的结果的总和。 样例输入: 1234 样例输出: 492

正确答案:参考程序(Python):表达式求值总和。在S插1或2个加号(不邻、不首位),枚举分割求所有表达式值求和。样例1234→492。核心:枚举插加号求和。

试卷来源:202410(第16届)蓝桥杯C++编程青少组(选拔赛_中高级)真题

本卷相关题目

在线做题 同科目题库