【题解】【模拟】—— [NOIP2013 普及组] 表达式求值

news2024/10/9 2:59:58

【题解】【模拟】—— [NOIP2013 普及组] 表达式求值

  • [NOIP2013 普及组] 表达式求值
    • 题目背景
    • 题目描述
    • 输入格式
    • 输出格式
    • 输入输出样例
      • 输入 #1
      • 输出 #1
      • 输入 #2
      • 输出 #2
      • 输入 #3
      • 输出 #3
    • 提示
  • 1.简单做法
    • 1.1.题意解析
    • 1.2.AC代码
  • 2.使用栈的做法
    • 2.1.题意解析
    • 2.2.AC代码

[NOIP2013 普及组] 表达式求值

通往洛谷的传送门

题目背景

NOIP2013 普及组 T2

题目描述

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

输入格式

一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 + 和乘法运算符 *,且没有括号,所有参与运算的数字均为 0 0 0 2 31 − 1 2^{31}-1 2311 之间的整数。

输入数据保证这一行只有 0123456789+* 12 12 12 种字符。

输出格式

一个整数,表示这个表达式的值。

注意:当答案长度多于 4 4 4 位时,请只输出最后 $ 4$ 位,前导 $ 0$ 不输出。

输入输出样例

输入 #1

1+1*3+4

输出 #1

8

输入 #2

1+1234567890*1

输出 #2

7891

输入 #3

1+1000000003*1

输出 #3

4

提示

对于 30 % 30\% 30% 的数据, 0 ≤ 0≤ 0 表达式中加法运算符和乘法运算符的总数 ≤ 100 ≤100 100

对于 80 % 80\% 80% 的数据, 0 ≤ 0≤ 0 表达式中加法运算符和乘法运算符的总数 ≤ 1000 ≤1000 1000

对于 100 % 100\% 100% 的数据, 0 ≤ 0≤ 0 表达式中加法运算符和乘法运算符的总数 ≤ 100000 ≤100000 100000

1.简单做法

1.1.题意解析

    我们可以将这道题看成多个乘法算式的和,那么就很好做了。

    定义一个变量num,存储当前段的乘积。定义一个变量ans,存储答案。

    先读入第一个数。然后循环分别读取一个符号 t m p tmp tmp和一个数字 x x x,如果读入的符号是*,就用num*x。否则就ans+=numnum=x

注意:
1)要对最后的乘积段进行额外处理;
2)每一步都要对10000取模。

1.2.AC代码

#include<bits/stdc++.h>
using namespace std;
#define mod 10000 
int x,ans,num;//ans为答案,num为当前段乘积,x为当前数
char tmp;//计算符号 
int main()
{
	scanf("%d",&num);
    while(scanf("%c",&tmp)&&tmp!='\n')
    {
    	scanf("%d",&x);
    	if(tmp=='*')num=(num*x)%mod;//每一步都要对10000求余 
		else ans=(ans+num)%mod,num=x;
	}
	printf("%d",(ans+num)%mod);//计算最后的和
	return 0;
}

2.使用栈的做法

2.1.题意解析

    不会栈的同学可以先走一步了。

    和上面的做法类似,将所有的乘积段压入栈,最后统一取出求和。

2.2.AC代码

#include<bits/stdc++.h>
using namespace std;
#define mod 10000
int x,ans,num;//ans为答案,num为当前段乘积,x为当前数
char tmp;//计算符号
stack<int>s;
int main()
{
	scanf("%d",&num);
    while(scanf("%c",&tmp)&&tmp!='\n')
    {
    	scanf("%d",&x);
    	if(tmp=='*')num=(num*x)%mod;//每一步都要对10000求余 
		else s.push(num),num=x;
	}
	ans=num;
	while(!s.empty())
		ans=(ans+s.top())%mod,s.pop();
	printf("%d",ans%mod);//计算最后的和
	return 0;
}

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2197821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C高级--shell脚本实现分支判断

题目&#xff1a; 分支结构结合test指令完成一下编程 1>判断闰年 2>输入一个数判断是否为偶数 3>使用test指令实现等级判断 90--100A 60--89B 0-50C 其他错误 代码如下&#xff1a; #!/bin/bash read -p "请输入一个年份&#xff1a;" year if [ $((y…

Cisco Meraki平台登陆

登陆以下网址 https://n4.meraki.cn/ 输入之前注册的邮箱&#xff0c;点击Next 输入之前注册时输入的密码&#xff0c;注意不是企业邮箱的密码&#xff01; 查看邮箱&#xff0c;将验证码输入&#xff0c;点击Verify&#xff08;验证&#xff09;&#xff0c;此验证码10分…

C语言-文件IO

文件IO I :input 输入&#xff0c;从文件中读取数据到内存 O:output 输出&#xff0c;把数据写入到文件 Linux系统IO 和 c语言标准IO 1、linux系统IO 1.1 简介 linux操作系统把对文件的操作封装成了多个函数&#xff0c;统称为linux系统IO。 文件描述符(File descirptor)…

笔试算法day01

目录 1.除2 2.Fibonacci数列&#xff08;Fib 数列&#xff09; 3.单词搜索 1.除2 除2&#xff01; (nowcoder.com) 算法思路&#xff1a; 只需要对最大的n个偶数进行/2即可。 将所有的偶数存进大根堆中&#xff0c;执行k次操作即可 #include <iostream> #include <…

2024年AI知识库哪家强?8款主流软件对比分析

在当今这个信息爆炸的时代&#xff0c;如何高效地管理、搜索和共享知识成为了一个重要的问题。AI知识库作为一种先进的解决方案&#xff0c;正受到越来越多企业和个人的青睐。本文将对比分析8款主流的AI知识库软件&#xff0c;帮助大家找到最适合自己的工具。 1. HelpLook AI知…

机器学习K近邻算法——回归问题K近邻算法示例

针对“数据4.1”&#xff0c;讲解回归问题的K近邻算法&#xff0c;以V1&#xff08;营业利润水平&#xff09;为响应变量&#xff0c;以V2&#xff08;固定资产投资&#xff09;、V3&#xff08;平均职工人数&#xff09;、V4&#xff08;研究开发支出&#xff09;为特征变量。…

Flutter 进阶:根据IP地址判断用户国家/地区

在应用开发中根据IP地址判断用户国家/地区的两种方法 引言 在开发国际化应用时&#xff0c;了解用户的地理位置至关重要。这不仅影响用户体验&#xff0c;还关系到内容展示和合规性。本文将介绍两种通过IP地址判断用户所在国家或地区的方法。 方法一&#xff1a;使用 ip-api…

redis高级(面试题二)

目录 一、redis的五大数据结构有哪些&#xff1f;zset底层是什么结构&#xff1f; 1、redis五大数据结构有哪些&#xff1f; 2、什么是skiplist&#xff1f; 3、zset底层是什么结构&#xff1f; 二、Redis的内存过期策略是什么&#xff1f;Redis的内存淘汰策略有哪些&#…

【专题】数据库系统的基本原理

1. 数据库系统概述 1.1. 数据库系统的应用 电信业、银行业、金融业、销售业、联机的零售商、大学、航空业、人力资源、制造业等等。 1.2 数据库系统的概念 (1) 数据&#xff08;Data&#xff09; 数据是数据库存储的基本对象。是描述现实世界中各种具体事物或抽象概念的、可…

Nuxt日志监控(服务端及客户端日志检测)

此文章主要讲解如何使用Nuxt进行日志监控&#xff0c;例如服务端请求日志&#xff0c;客户端请求日志&#xff0c;方便线上出现问题能及时排查问题所在 一、下载依赖 npm install winston winston-daily-rotate-file二、plugin下创建日志处理插件winston.js&#xff0c;对日志…

靠谱!有了它,微信自动统计报表轻松搞定!

当你需要定期统计多个微信号的数据时&#xff0c;每次都要逐一登录并手动统计各种数据&#xff0c;这不仅耗时&#xff0c;还容易出错。 好在&#xff0c;一个便捷的工具——个微管理系统能够帮助我们高效地管理这些繁杂的数据&#xff0c;让我们的工作事半功倍。 好友统计报…

安装Node.js环境,安装vue工具(最佳实践)

一、安装Node.js 去官网下载自己需求的安装包&#xff08;我提供的步骤是windows10 64x&#xff09; 下载 | Node.js 中文网 (nodejs.cn)https://nodejs.cn/download/ 下载好后&#xff0c;安装到默认路径就好了&#xff0c;所占用的内容很少。 一直点next就行了 安装好后&a…

python操作.docx、.pptx文件

python操作.docx、.pptx文件 .docx文件和.pptx文件是Microsoft Office套件中两种常见的文件格式&#xff0c;分别对应Word文档和PowerPoint演示文稿。WPS Office完美支持Microsoft Office文件格式。 使用 Python 操作 .docx 和 .pptx 文件是一项非常实用的技能&#xff0c;尤…

BlabkForestLabs 又放大招:“蓝莓”模型其实是 Flux1.1?!

神秘的 AI 生成模型 BlabkForestLabs 又放大招了&#xff1f;就在 AI 绘画圈还在训练 Flux.1 练的不亦乐乎的时候&#xff0c;黑森林工作室又推出了一个新的模型—— Flux1.1 &#xff01;这次升级后的 Flux1.1 性能直接完爆前版的 Flux.1 &#xff0c;再次将 AI 绘画的上限拉高…

如何给ppt增加新的一页?这2个ppt使用技巧值得推荐!

在当今讲究视觉表现力的时代&#xff0c;PPT已经成为职场中不可或缺的工具。无论是汇报工作、演示方案还是传递想法&#xff0c;一份精美的PPT都能让你的演讲&#xff08;演示&#xff09;更加出色。 然而&#xff0c;制作PPT并非易事&#xff0c;尤其是对于新手来说&#xff…

STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8

目录 一、教程简介 二、驱动理论讲解 三、CubeMX生成底层代码 四、Keil5编写代码 五、实验结果 一、教程简介 本教程面向初学者&#xff0c;只介绍DS18B20的常用功能&#xff0c;但也能满足大部分的运用需求。跟着本教程操作&#xff0c;可在10分钟内解决DS18b20通信难题。…

windows认证

本地环境用户信息存储在%systemroot%/system32/SAM 域环境用户信息存储在ntds.dit 本地认证 windows系统下哈希结构&#xff1a;username:RID:LM-HASH:NT-HASH LM哈希 算法&#xff1a; 转大写&#xff0c;转二进制&#xff0c;补0补足14字节 二分获得两段字串&#xff…

算法:238.除自身以外数组的乘积

题目 链接&#xff1a;leetcode链接 思路分析&#xff08;前缀和&#xff09; 这道题非常类似 724. 寻找数组的中心下标 在前一篇博客讲解了该题目 传送门:算法&#xff1a;724.寻找数组的中心下标 这道题目的区别在于&#xff0c;这道题是预处理前缀积和后缀积 另外&#x…

了解网页 blob 链接

blob 链接 自从 HTML5 提供了 video 标签&#xff0c;在网页中播放视频变得非常简单&#xff0c;只要在代码中插入一个 video 标签&#xff0c;再将 video 标签的 src 属性设置为视频的链接就可以了。由于 src 指向的是视频文件真实的地址&#xff0c;所以当我们通过浏览器的调…

如何绘制短剧产业链图谱?短剧产业前景如何?

绘制短剧产业链图谱是一个涉及多个环节的复杂过程。我们首先需要确定产业链的主要环节&#xff0c;包括内容创作、制作、发行、宣传和观众。每个环节都由不同的参与者组成&#xff0c;如编剧、导演、演员、制作公司、版权销售商、在线平台、电视台、广告公司和消费者等&#xf…