当前位置: 首页 > news >正文

(新卷,100分)- 火星文计算(Java JS Python)

(新卷,100分)- 火星文计算(Java & JS & Python)

题目描述

已知火星人使用的运算符为#、$,其与地球人的等价公式如下:

x#y = 2*x+3*y+4

x$y = 3*x+y+2

  1. 其中x、y是无符号整数
  2. 地球人公式按C语言规则计算
  3. 火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算

现有一段火星人的字符串报文,请你来翻译并计算结果。

输入描述

火星人字符串表达式(结尾不带回车换行)

输入的字符串说明:字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。

例如:123#4$5#67$78。

  1. 用例保证字符串中,操作数与操作符之间没有任何分隔符。
  2. 用例保证操作数取值范围为32位无符号整数。
  3. 保证输入以及计算结果不会出现整型溢出。
  4. 保证输入的字符串为合法的求值报文,例如:123#4$5#67$78
  5. 保证不会出现非法的求值报文,例如类似这样字符串:

#4$5 //缺少操作数

4$5# //缺少操作数

4#$5 //缺少操作数

4 $5 //有空格

3+4-5*6/7 //有其它操作符

12345678987654321$54321 //32位整数计算溢出

输出描述

根据输入的火星人字符串输出计算结果(结尾不带回车换行)。

用例
输入7#6$5#12
输出226
说明

7#6$5#12

=7#(3*6+5+2)#12

=7#25#12

=(2*7+3*25+4)#12

=93#12

=2*93+3*12+4

=226

题目解析

该题目确保了输入字符串格式严格遵循"数字+操作符+数字"的模式,不会出现非法求值报文,因此非常适合使用正则表达式进行匹配处理。

解题步骤如下:

  1. 使用正则表达式匹配"操作数$操作数"的模式
  2. 将匹配到的表达式替换为计算结果
  3. 此时字符串中仅剩#分隔符
  4. 按照#对字符串进行分割
  5. 从左至右对相邻两个操作数进行计算

通过以上步骤即可得出最终解答。


这里不同语言的字符串首次匹配替换的API功能各有差异:

JSreplaceString.prototype.replace() - JavaScript | MDN (mozilla.org)
JavareplaceFirstString (Java Platform SE 8 ) (oracle.com)
PythonreplacePython replace()方法 | 菜鸟教程 (runoob.com)

其中

  • JS字符串的replace只替换第一次匹配,符合要求。
  • Java的replce方法是替换所有匹配,而replaceFirst方法是替换第一次匹配,但是需要注意的是replaceFirst方法的第一个参数匹配串,将被用作正则表达式的内容,而$又是正则表达式的元字符,因此我们需要对$进行转义,当成普通字符使用。
  • Python的replace方法是替换所有匹配,但是我们可以通过replace第三个参数来控制最大替换次数。
JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const path = require("path"); const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { console.log(huoxin(line)); }); function huoxin(str) { const regExp = /\d+\$\d+/; while (str.indexOf("$") !== -1) { str = str.replace(regExp, (match) => operate$(match).toString()); } return str .split("#") .map(Number) .reduce((x, y) => 2 * x + 3 * y + 4); } function operate$(str) { const i = str.indexOf("$"); const x = parseInt(str.slice(0, i)); const y = parseInt(str.slice(i + 1)); return 3 * x + y + 2; }
Java算法源码
import java.util.Arrays; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Other { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); System.out.println(getResult(str)); } public static long getResult(String str) { Pattern p = Pattern.compile("(\\d+)\\$(\\d+)"); while (true) { Matcher m = p.matcher(str); if (!m.find()) break; String subStr = m.group(0); long x = Long.parseLong(m.group(1)); long y = Long.parseLong(m.group(2)); str = str.replaceFirst(subStr.replace("$", "\\$"), 3 * x + y + 2 + ""); } return Arrays.stream(str.split("#")) .map(Long::parseLong) .reduce((x, y) -> 2 * x + 3 * y + 4) .orElse(0L); } }
Python算法源码
import re # 输入获取 s = input() # 算法入口 def getResult(s): p = re.compile("(\\d+)\\$(\\d+)") while True: m = p.search(s) if m: subS = m.group() x = int(m.group(1)) y = int(m.group(2)) s = s.replace(subS, str(3 * x + y + 2), 1) # 注意这里replace只能进行替换第一次出现的,不能替换多次,因此replace方法第三个参数为1,表示只替换首次匹配 else: break arr = list(map(int, s.split("#"))) x = arr[0] for y in arr[1:]: x = 2 * x + 3 * y + 4 return x # 算法调用 print(getResult(s))
http://www.jsqmd.com/news/334566/

相关文章:

  • 2026梯具厂家综合实力排名:产能、专利、服务三维度权威对比 - 爱采购寻源宝典
  • OpenClaw 安装并配置飞书插件
  • 智慧能源管理在零碳园区中扮演什么角色?
  • Ubuntu上使用企业微信
  • 算子(Operator):深度学习的乐高积木
  • 广州鞋都商家必看:AI套图突围!让你的高跟鞋,撑起产地时尚牌
  • SSM毕设选题推荐:基于ssm的红色旅游网站红色文化宣传平台的设计与实现基于Web的红色旅游网站【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 稀土化合物:不为人知的科技力量
  • 档案管理系统如何支持多级审批流?自定义节点与角色权限详解
  • 基于深度学习的胰腺肿瘤分段模型在公共内镜超声数据集上的表现
  • kanass详解与实战 - kanass与soular相关联,实现统一登录
  • DBCO-Ce6,氯菁6二苯基环辛炔,Ce6-DBCO,关键参数
  • SSM毕设项目:基于ssm的智慧养老云服务平台设计与开发(源码+文档,讲解、调试运行,定制等)
  • C++中的枚举类高级用法
  • 计算机SSM毕设实战-基于ssm的智能密室逃脱信息管理系统的设计与实现主题管理、在线预约、运营管理【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • DSPE-PEG2k-iRGD-FITC,DSPE-聚乙二醇-多肽-异硫氰基荧光素,化学特性
  • SSM计算机毕设之基于ssm的红色旅游资源红色文化宣传平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 如何在服务器上查看网络连接数并进行综合分析
  • 【课程设计/毕业设计】基于ssm的电子商务平台的设计与实现电子商务交易系统的设计与实现【附源码、数据库、万字文档】
  • <span class=“js_title_inner“>一文详解ITIL 4 与 ITILV5之间核心差异、更新及改进</span>
  • 天翼AI云电脑预置Clawdbot->Moltbot->OpenClaw,别管了,快上车!
  • 使用WisdomSSH快速验证Ollama部署的DeepSeek模型能力
  • DSPE-PEG2000-CKKEEEKKEEEKKEEEK,磷脂-聚乙二醇-KTP
  • 【课程设计/毕业设计】基于Web的红色旅游网站基于ssm的红色文化宣传平台的设计与实现【附源码、数据库、万字文档】
  • Android 15 Binder驱动与内核机制深度解析
  • 报告基因细胞系 | 信号通路分析 | 高通量药物筛选
  • 基于C++的游戏引擎开发
  • DSPE-PEG2000-Hyaluronic Acid,DSPE-聚乙二醇-透明质酸,合成思路
  • 【课程设计/毕业设计】基于ssm的智能密室逃脱信息管理系统的设计与实现在线预约、场次管理、道具维护【附源码、数据库、万字文档】
  • 让Maven从自定义本地路径读取jar包,但是提示从http://maven.aliyun.com路径拉取依赖且失败