首页 > 其他分享 >2024年华为OD机试题-火星文计算

2024年华为OD机试题-火星文计算

时间:2024-04-04 21:30:57浏览次数:26  
标签:12 OD vv1 2024 华为 火星人 len vv 字符串

题目描述:

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

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
 

题解:

import sys

for line in sys.stdin:
    a = line.split()[0]
    digits = "0123456789"
    vv = []
    for i in range(len(a)):
        if a[i] in digits:
            if len(vv) > 0 and isinstance(vv[-1], int):
                vv[-1] = vv[-1] * 10 + int(a[i])
            else:
                vv.append(int(a[i]))
        elif a[i] == '#' or a[i] == '$':
            vv.append(a[i])
    vv1 = []
    for j in range(len(vv)):
        if isinstance(vv[j], int):
            if len(vv1) > 0 and vv1[-1] == '#':
                vv1.pop()
                vv1[-1] = vv1[-1] * 4 + vv[j] * 3 + 2
            else:
                vv1.append(vv[j])
        else:
            vv1.append(vv[j])
    v = 0
    for k in range(len(vv1)):
        if isinstance(vv1[k], int):
            if k == 0:
                v = vv1[k]
            if k > 0 and vv1[k - 1] == '$':
                v = 2 * v + vv1[k] + 3
            
    print(v)

标签:12,OD,vv1,2024,华为,火星人,len,vv,字符串
From: https://blog.csdn.net/ggjjl1/article/details/137382979

相关文章

  • 2024年华为OD机试题-提取字符串中的最长数学表达式并计算
    提取字符串中的最长数学表达式并计算题目描述提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回0。简单数学表达式只能包含以下内容0-9数字,符号+-*说明1、所有数字,计算结果都不超过long2、如果有多个长度一样的,请返回第一个表达式......
  • 红明谷初赛2024-web-wp
    这次队里我们仨发挥中规中矩,排14名。只能说最后unauth那道会错了意,然后卡住了,后面才发现是原题秒出的那种.....确实是我傻逼了....ezphp可以用endoafr报错拿到文件内容,然后就是一个匿名类的读取。<?phphighlight_file(__FILE__);//flag.phpif(isset($_POST['f'])......
  • nodejs中使用Nunjucks 模板引擎
    要在Koa2中使用Nunjucks模板引擎,你需要进行一些额外的设置。以下是一个示例代码,演示了如何在Koa2中集成Nunjucks:首先,确保已经安装了Koa和Nunjucks:npminstallkoanunjucks然后,在项目中创建一个名为app.js的文件,并添加以下代码:constKoa=require('koa');con......
  • 人是否应该以貌取人 英语作文 四级备考 20240404
    题目:Doyouagreeordisagreewiththefollowingstatement?Oneshouldneverjudgeapersonbyexternalappearances.Usespecificreasonsanddetailstosupportyouropinion.(150words)作文:Ifirmlybelievethatoneshouldneverjudgeapersonsolelybyt......
  • (谷歌浏览器)如何在vscode中搭建vue.js devtools的环境
    搭建过程中明明所有操作步骤都做了,却还是出现下面这种情况: 以下是正确的搭建操作步骤:根据一下图片在vscode中创建文件夹;将以下代码写入; <scripttype="text/javascript"src="../js/vue.js"></script>接下来就是我们需要点击https://vuejs.zcopy.site/,进入到网站后,......
  • 少儿编程 2024年3月电子学会图形化编程等级考试Scratch一级真题解析(选择题)
    2024年3月scratch编程等级考试一级真题选择题(共25题,每题2分,共50分)1、单击下列哪个按钮,能够让舞台变为“全屏模式”A、B、C、D、答案:C考点分析:考查scratch平台的使用,四个选项分别是:开始程序,停止程序,全屏模式,恢复正常模式,答案C2、下列哪个选项可以将当前背景换成第二......
  • 华为交换机M-LAG配置
    基于M-LAG组成的双活系统提供了设备级的可靠性,将双归接入的两台设备在逻辑上虚拟成一台设备。M-LAG提供了一个没有环路的二层拓扑同时实现冗余备份。多级M-LAG互联可以在保证可靠性、提供链路利用率的同时扩展双归接入的网络规模,满足客户的需求。  方法/步骤1第一......
  • 26岁女硕士:被省烟草局提前录取了,但我实在高兴不起来,因为我是学计算机的,华为也发了offe
    刷到一则网友爆料感觉挺有意思,一位女硕士研究生,本科学的是计算机专业,因为父母建议报考了省烟草局,没曾想被提前录取,而这位同学却怎么也高兴不起来。她的理由是不想年纪轻轻就过一眼望得到头的日子,想出去闯一闯。有的网友却不干了,省编制多好呀,比铁饭碗还多了一层金属!......
  • C语言 | Leetcode C语言题解之第8题字符串转换整数atoi
    题目:题解:intmyAtoi(char*s){inti=0;intout=0;intpol=1;intlen=strlen(s);if(len==0)return0;while(s[i]=='')i++;//删除空格if(s[i]=='-'){//判断正负pol=-1;i++;}else......
  • 【leetcode】将x减到0的最小操作数/水果成篮/找到字符串中所有字母异位词{史上最容易
    文章目录1.将x减到0的最小操作数2.水果成篮3.找到字符串中所有字母异位词1.将x减到0的最小操作数分析题目x不断地减去数组两端的值看能否减到0;是不是就是在问:nums数组中存不存在【左端+右端】组成的连续区间,区间上数的和为x继续分析==》是不是就是在问:nums......