HUAWEI 机试题火星文计算
🌈 Scala 实现
题目描述:
-
已知火星人使用的运算符为#、$,其与地球人的等价公式如下:
-
x#y = 2x 3y 4
-
x$y = 3*x y 2
- 其中x、y是无符号整数
- 地球人公式按C语言规则计算
- 火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算 现有一段火星人的字符串报文,请你来翻译并计算结果。
输入描述:
- 火星人字符串表达式(结尾不带回车换行)
**输入的字符串说明: **
-
字符串为仅由无符号整数和操作符(#、$)
-
组成的计算表达式。例如:123#45#6778
- 用例保证字符串中,操作数与操作符之间没有任何分隔符。
- 用例保证操作数取值范围为32位无符号整数。
- 保证输入以及计算结果不会出现整型溢出。
- 保证输入的字符串为合法的求值报文,例如:123#45#6778
- 保证不会出现非法的求值报文,例如类似这样字符串:
- #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
代码:
def main(args: Array[String]): Unit = {
// 获取输入
val nums = StdIn.readLine().split("#")
// 记录结果
var res = 0
// 计算 #
for (i <- 1 until nums.length) {
// 计算 $
if(nums(i).indexOf("$") != -1){
val tmps = nums(i).split("\\$").map(_.toInt)
// 计算后将值放回
nums(i) = dollar(tmps(0),tmps(1)).toString
}
res = jing(nums(i-1).toInt, nums(i).toInt)
// 将值放回
nums(i) = res.toString
}
// 输出结果
println(res)
}
def dollar(x: Int, y: Int): Int = {
return 3 * x y 2
}
def jing(x: Int, y: Int): Int = {
return 2 * x 3 * y 4
}
❤️ END ❤️
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcheeh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13