NOIP2013普及组 T2 表达式求值

CSP-J-2013-表达式求值 模拟 阅读详情

OJ地址:洛谷P1981 CODEVS 3292

 

正常写法是用栈

#include<iostream>
#include<algorithm>
#include<cmath>
#include<stack>
#include<cstring>
#include<cstdio>
using namespace std;
char c[20000000];

stack<long long>num;//数
stack<char>sy;//符号
void mth(){//运算
    int a,b;
    char ch;
    b=num.top();
    num.pop();
    a=num.top();
    num.pop();
    ch=sy.top();
    sy.pop();
    switch(ch){
        case '+': num.push((a+b)%10000);break;
        case '*': num.push((a*b)%10000);break;
    }
    return;
}
int cmp(int ch){//优先级判断,没有严谨验证过,初步测试没有问题
    if(sy.empty() || sy.top()=='(')return 0;
    if(ch=='+' || ch=='-')return 1;
    if(ch=='*' && sy.top()=='*')return 1;
    return 0;

int main(){
    gets(c);
    int len=strlen(c);
    c[len]=')';
    sy.push('(');
    int i;
    
   if(c[0]<'0'||c[0]>'9'){
        num.push(0);
    }
    
    
    for(i=0;i<=len;i++){
        if(c[i]=='('){
            sy.push('(');
            continue;
        }
        if(c[i]>='0' && c[i]<='9')
        {
            long long x=0;
            while(c[i]>='0' && c[i]<='9'){
                x=x*10+c[i]-'0';
                i++;
            }
            i--;
            num.push(x);
            continue;
        }
        if(c[i]==')'){
            while(sy.top()!='(')mth();
            sy.pop();
            continue;
        }
        
        
        
        while(cmp(c[i]))mth();
        sy.push(c[i]);
    }
    while(!sy.empty())mth();
    cout<<num.top()%10000; 
//    printf("%d ",num.top()%10000);
    return 0;
}

正常写法


简单解法

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
char last;
char c;
int x=0;
int a=0,b=1;
int sum=0;
int main(){
    int i,j;
    bool flag=1;
    do{
        if(cin>>c);
        else{
            flag=0;
            c='+';//相当于在整个串最后补个+号,以完成全部运算
        }
        if(c>='0' && c<='9')x=x*10+c-'0';
        else{
            a=x;
            x=0;
        }
        if(c=='*'){
            last=1;
            b=(a*b)%10000;
        }
        if(c=='+'){
            if(last){
                a=(a*b)%10000;
                sum=(sum+a)%10000;
                b=1;
                last=0;
            }
            else sum+=a;
        }
        
    }while(flag==1);
    printf("%d",sum%10000);
    return 0;
}



【2013NOIP普及组】T2. 表达式求值 试题解析 阅读详情

相关推荐

NOIP2013普及组复赛第二题《表达式求值》测试数据10组

NOIP2013普及组复赛第二题《表达式求值》测试数据10组

2013NOIP普级组第二题--表达式的值(参考洛谷题解)

一、题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 输入输出格式 输入格式: 输入文件为 expr.in。 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2^31-1 之间的整数。输入数据保证这一行只有 0~ 9、+、*这 12 种字符。 输出格式:输

漫漫程序路 9368

硅谷刷屏的ClawdBot,让Mac mini卖爆了!创始人爆料:一人开发、100% AI 写代码

这两天,个人 AI 助手 ClawdBot 席卷硅谷,国内外社交平台上全是关于它的讨论。 在试用后,网友们纷纷给出了很高的评价。“它是迄今为止最伟大的 AI 应用,相当于你 24 小时全天候专属 AI 员工。”Creator Buddy 创始人兼 CEO Alex Finn 盛赞道,“这就是他们 (Anthropic) 希望 Claude Cowork 呈现的样子。”

技术引领业务创新 1584

牛客 - 表达式求值 (栈的应用)

题目:表达式求值 Description 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 Input 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号。 所有参与运算的数字均为 0 到 231-1 之间的整数。 输入数据保证这一行只有0~9、+、*这12种字符。 Output 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4位时,请只输出最后4位,前导0不输出。 Sample 示例1 输入 1+1*3+4

叶子的小本本 497

深入解析:如何基于开源OpENer开发EtherNet/IP从站服务

通过OpENer开源库,开发者可以快速实现符合ODVA规范的EtherNet/IP从站设备,降低开发成本并提高系统灵活性。本文详细介绍了EtherNet/IP协议原理、OpENer库的特点与优缺点,以及二次开发的完整流程。通过遵循本文提供的指南,开发者可以成功构建出工业级的EtherNet/IP通信设备。

极地星辰 2999

Tessent MBIST SDC

主要是两个PROC,tessent_constrain_${design_name}_mentor_ijtag_non_modal和tessent_constrain_${design_name}_mentor_memory_bist_modal。其中,Memory/MBIST controller/MEM Interface可以从func_clk_1来(用func_clk_1和func_clk_2的高频时钟),如图中红色线。其中,SIB和BAP用ijtag_tck的clock,如图绿色线。

po_poo的博客 1988

NOIP2013年普及组T2 表达式求值

【题目描述】 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 【输入描述】 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“∗”,且没有括号,所有参与运算的数字均为 0到 之间的整数。输入数据保证这一行只有 0∼9、+、∗这 12 种字符。 【输出描述】 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。 【输入样例1】 1+1*3+4 【输出样例1】 8 【输入样例2】 1+123

codecoming的博客 1346

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

念兮为美 5万+

[NOIP2013]表达式求值 c++四则表达式求值(不包含括号)

定义两个栈,一个a栈用来存放数字,另一个b栈用来存放运算符,遇见数字将数字压入a栈,遇见运算符将运算符压入b栈,当第二次压入运算符之前 先与此时b栈栈顶的运算符'x' 优先级进行比较,如果'x'优先级大于栈顶优先级,将'x'压栈,若小于,取出a栈中的栈顶元素a[top]和a[top-1]与b栈中栈顶运算符 'y' 进行运算,将运算结果result再次压入a的栈顶,将b栈顶运算符'y'弹出,将'x'运算符插入栈中。 当循环遍历完之后,可能栈中可能还会有剩余的运算符和整数没有运算,判断是否还有运算符...

weixin_52797843的博客 981

五、MT8168 音频驱动之SPEAKER

本章主要讲解MT8168平台的内部SPEAKER驱动配置。分为HP接法和LINE OUT接法。2.1.3 audio_custom_exp.h设置。2.1.4 mixer_paths.xml设置。2.2.3 mixer_paths.xml设置。2.1.2 ProjectConfig 设置。2.2.2 ProjectConfig 设置。2.2.1 deconfig设置。2.1.1 DTS设置。......

Joon2020的博客 1664

【Bug已解决】Codex CLI 报错 apply_patch 失败:无法应用补丁的解决方案

方案适用场景推荐指数统一换行符规范跨平台协作项目的标准配置⭐⭐⭐⭐⭐关闭自动格式化冲突IDE 与 Codex 并发编辑同一文件⭐⭐⭐⭐缩小任务改动范围长期有效的使用习惯优化⭐⭐⭐⭐⭐统一 UTF-8 编码涉及非 UTF-8 遗留文件的项目⭐⭐⭐提示重新读取文件单次失败后的快速恢复方式⭐⭐⭐⭐报错的本质是Codex 生成补丁时读取的文件内容,与实际应用补丁时磁盘上的文件内容出现了不一致,常见诱因包括换行符风格混用、文件被其他工具并发修改、编码问题等。

一键难忘的博客 7298

信息学奥林匹克竞赛 普及组 NOIP 2013 T2 表达式求值

题目要求计算只包含加法和乘法的算术表达式值,结果保留最后4位。采用顺序处理法,从左到右遍历表达式,处理数字和运算符。遇到前加后乘时先算乘法,其他情况先算前面的运算。使用三个变量a、b、c存储运算数,两个变量op1、op2存储运算符。最终处理后输出结果对10000取模的值。算法时间复杂度为O(n),适用于大规模数据。

长春高老师编程 308

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

表达式求值 noip2013普及组t2

3292 表达式求值   2013年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 描述 Description 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 输入描述

Loi_DL的博客 1432

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2024_7_15~暑期40天算法集训_个人笔记(第二周)_完成版

表达式求值NOIP2013 普及组 T2。

qdqs4的博客 416

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

P1981 [NOIP2013 普及组] 表达式求值

模拟,字符串,栈的使用

m0_74387420的博客 406

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NOIP2013 表达式求值

题目:http://www.luogu.org/problem/show?pid=1981# 分析:栈的应用。两个栈,一个存数字一个存操作符,当遇到符号时计算优先级比它小的所有符号,则最后栈顶元素即为答案。 代码:#include <cstdio> #include <algorithm> #include <cstring> #include <stack> using namespace s

OI -> ACM -> AI 1802

[NOIP2013]表达式求值 T2 题解

Description 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 Input 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到2^31-1之间的整数。输入数据保证这一行只有0~9、+、*这12种字符。 Output 输出只有一行,包含一个整数,表示这个表达式的值。注

zyq_20030305的博客 586

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

平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。和上面的做法类似,将所有的乘积段压入栈,最后统一取出求和。给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。一行,为需要你计算的表达式,表达式中只包含数字、加法运算符。一个整数,表示这个表达式的值。

Pantheraonca的博客 1521
上一篇: 1.浮点数运算误差
下一篇: UVa 839 Not so Mobile
SilverNebula
博客等级 码龄11年 11粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值