当前位置:   article > 正文

OD-火星文计算(Python)_python od 火星文计算

python od 火星文计算

火星文计算

题目描述

已经火星人使用的运算符号为# $
其与地球人的等价公式如下
x#y=2*x+3*y+4
x$y=3*x+y+2
x y是无符号整数
地球人公式按照c语言规则进行计算
火星人公式中$符优先级高于#相同的运算符按从左到右的顺序运算

输入描述

火星人字符串表达式结尾不带回车换行
输入的字符串说明是 字符串为仅有无符号整数和操作符组成的计算表达式

  1. 用例保证字符串中操作数与操作符之间没有任何分隔符
  2. 用例保证操作数取值范围为32位无符号整数,
  3. 保证输入以及计算结果不会出现整型溢出
  4. 保证输入的字符串为合法的求值报文
    例如: 123#4$5#76$78
  5. 保证不会出现非法的求值报文
    例如:
    #4$5 这种缺少操作数
    4$5# 这种缺少操作数
    4#$5 这种缺少操作数
    4 $5 有空格
    3+4-5*6/7 有其他操作符
    12345678987654321$54321 32位整数溢出

输出描述

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

示例一

输入

7#6$5#12

输出

226

说明

示例

  1. 7#6$5#12=7#(3*6+5+2)#12
  2. =7#25#12
  3. =(2*7+3*25+4)#12
  4. =93#12
  5. =2*93+3*12+4
  6. =226

代码

  1. # !E:\pythonScript\venv python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Date: 2023/4/4
  5. Author: kang
  6. ep:
  7. x#y=2*x+3*y+4
  8. x$y=3*x+y+2
  9. 7#6$5#12
  10. """
  11. import re
  12. mars = input()
  13. mars_l = list(map(int, re.sub(r"#|\$", " ", mars).split()))
  14. sign = re.findall(r"#|\$", mars)
  15. for i in range(len(sign)):
  16. if sign[i] == "$":
  17. k = 3 * int(mars_l[i]) + int(mars_l[i + 1]) + 2
  18. mars_l[i] = k
  19. mars_l[i + 1] = ""
  20. new_list = [i for i in mars_l if i != ""]
  21. earth = 0
  22. for i in range(len(new_list)):
  23. if i == 0:
  24. earth = (2 * new_list[0] + 3 * new_list[1] + 4)
  25. elif i > 1:
  26. earth = (2 * earth + 3 * new_list[i] + 4)
  27. print(earth)

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/442522
推荐阅读
相关标签
  

闽ICP备14008679号