• 题解-洛谷P1981 表达式求值(模拟+处理优先级的递归)


    https://www.luogu.org/problemnew/show/P1981

    (原题链接)

    显然乘法的优先级高与加法,因此碰到乘号就要优先把一连串与乘号相连的数算出,很容易想到递归。可用普通的“从头扫到尾”的方法,以加号、乘号、及字符串尾的结束符(‘’)为间隔读入数字(因结尾没有符号,所以别忘了若不特别处理结尾,循环过完后会不处理最后读入的数)。

    因数据会很大,题目善良的说“注意:当答案长度多于 4 位时,请只输出最后4 位,前导0 不输出”,有了这句话,我们的运算就只有后四位有关了(无论是加法还是乘法,能影响结果后四位的只有加数或因数的后四位),因此我们可以忽略第五位以后,即每次运算后都%10000。但就算2个数都小于10000,它们的和或积也有可能超过10000,因此在最后的结果别忘了再%10000。需用文件的同学最后也别忘了加上(或去掉)双斜线。

    上代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 using namespace std;
     5 string suanshi;
     6 int l,total=0,g,i;
     7 long long a[100002];
     8 long long chengfa()
     9 {
    10     i++;
    11     for(;i<=l;i++)
    12     {
    13         if(suanshi[i]>='0'&&suanshi[i]<='9')
    14                 a[g]=(a[g]*10+suanshi[i]-'0')%10000;
    15         else
    16         if(suanshi[i]=='+'||suanshi[i]=='')
    17             {
    18                 g++;
    19                 return a[g-1];
    20             }
    21         else
    22         if(suanshi[i]=='*')
    23         {
    24             g++;
    25             return a[g-1]*chengfa()%10000;
    26         }
    27     }
    28 }
    29 int main()
    30 {
    31     cin>>suanshi;
    32     l=suanshi.length();
    33     g=1;
    34     for(i=0;i<=l;++i)
    35     {
    36         if(suanshi[i]>='0'&&suanshi[i]<='9') a[g]=a[g]*10+suanshi[i]-'0';
    37         else if(suanshi[i]=='+'||suanshi[i]=='')
    38             {
    39                 total=(total+a[g]%10000)%10000;
    40                 g++;
    41             }
    42         else
    43         if(suanshi[i]=='*')
    44         {
    45             g++;
    46             total=total+a[g-1]*chengfa()%10000;
    47         }            
    48     }
    49     cout<<total%10000;
    50     return 0;
    51 }
  • 相关阅读:
    移动端滑动效果
    使用Bash时的几点总结
    docker-It's possible that too few managers are online. Make sure more than half of the managers are online.
    基于elk 实现nginx日志收集与数据分析。
    python-num18 - django进阶一
    文成小盆友python-num17 - django基础
    文成小盆友python-num15 - JavaScript基础
    文成小盆友python-num14 - web 前端基础 html ,css, JavaScript
    文成小盆友python-num13 整个堡垒机
    install pip3 for python 3.x
  • 原文地址:https://www.cnblogs.com/InductiveSorting-QYF/p/10403769.html
Copyright © 2020-2023  润新知