• 洛谷 P1981 表达式求值


    题目链接:https://www.luogu.org/problem/P1981

    题目描述

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

    输入格式

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

    输入数据保证这一行只有0-9+、×这 12种字符。

    输出格式

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

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

    输入输出样例

    输入 #1
      1+1*3+4
    输出 #1
      8
    输入 #2
      1+1234567890*1
    输出 #2
      7891
    输入 #3
      1+1000000003*1
    输出 #3
      4

    说明
    对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100;
    对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤1000;
    对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100000。

    分析

    每个运算数都不超过int的表示范围,可以直接输入。

    至于拆分运算数和运算符,原本我还担心直接输入无法自动拆分,其实没有问题。参见如下代码:(参考出处https://www.cnblogs.com/xiaoyezi-wink/p/11043323.html

     1 #include<iostream>
     2 #include<stdio.h>
     3 using namespace std;
     4 const int mod=1e4;
     5 
     6 int x,y,k,ans=0;
     7 char fu;
     8 
     9 int main()
    10 {
    11 
    12     scanf("%d",&x);
    13     x=x%mod;
    14     while(scanf("%c",&fu)!=EOF)
    15     {
    16         if(fu=='
    ') break;
    17         scanf("%d",&y);
    18         y=y%mod;
    19         if(fu=='+')
    20         {
    21             ans=(ans%mod+x%mod)%mod;
    22             x=y;
    23         } 
    24         else if(fu=='*')
    25         {
    26             x=x%mod*y%mod;
    27         }
    28     }
    29     ans=(ans%mod+x%mod)%mod;
    30     printf("%d",ans);
    31     return 0;
    32 }

    原文代码:

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 const int mod=1e4;
     6 
     7 int x,y,k,ans=0;
     8 char fu;
     9 
    10 int main()
    11 {
    12     cin>>x;
    13     x=x%mod;
    14     while(cin>>fu)
    15     {
    16         if(fu=='
    ') break;
    17         cin>>y;
    18         y=y%mod;
    19         if(fu=='+')
    20         {
    21             ans=(ans%mod+x%mod)%mod;
    22             x=y;
    23         }
    24           
    25         if(fu=='*')
    26         {
    27             x=x%mod*y%mod;
    28         }
    29 
    30     }
    31     
    32     ans=(ans%mod+x%mod)%mod;
    33     
    34     printf("%d",ans);
    35 
    36     return 0;
    37 }
    View Code

    其实本文可以参考一下这两篇文章的处理方式:(仅做借鉴)

    https://www.cnblogs.com/huashanqingzhu/p/3465929.html

    https://www.cnblogs.com/huashanqingzhu/p/11783778.html

  • 相关阅读:
    Html页面渲染
    神思SS628(100)型第二代身份证验证阅读机B/S二次开发
    ASP.NET面试问题一天5问(四)
    ASP.NET面试问题一天5问(三)
    asp.net 面试问题一天5问(二)
    ASP.NET面试问题一天5问(一)
    ASP.NET MVC 3 第一天笔记
    2019 END → 2020 BEGIN
    vs中自己常用的快捷方式
    Dapper使用入门Demo
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/11783812.html
Copyright © 2020-2023  润新知