zoukankan      html  css  js  c++  java
  • cdoj 秋实大哥搞算数

    地址:http://acm.uestc.edu.cn/#/contest/show/95

    题目:

    N - 秋实大哥搞算数

    Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

    秋实大哥大学物理挂科了(误),于是在下学期的前两周的某一天要悲剧的补考。为了不给学校的挖掘机大楼做贡献,秋实大哥决定在假期里努力复习。当然,良好的计算能力也是非常必要的,毕竟是涉及计算自己做多少分的题能够通过考试的问题。现在他给自己出了一大堆长长的只有涉及整形四则运算式子,然后埋头计算结果。为了检验自己的计算能力,他请你来帮忙。

    Input

    第一行一个整数T,表示式子的总数。

    接下来每一行有一个长度不超过10^6的表达式,只包含正整数和四则运算符号('+', '-', '*', '/')。

    保证输入合法。

    Output

    对于每一个表达式,输出相应的结果,占一行。

    保证运算及结果在long long范围以内。

    Sample input and output

    Sample InputSample Output
    2
    12+5/4-1
    4*5/3
    12
    6

    思路:

    ,,wa次数最多的题目,,一开始没判 (第一见要判这个的,涨姿势了),,,wa无数次

    然后智商不够,用栈搞不出来,又只能自己想了。。。。。。

             我的做法是对答案有影响的就三个操作符,当前读取的操作符,和前两个,然后对所有情况分类讨论,,,这样就可以在读取的时候做的一边读取一边计算了。。。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <cmath>
     5 #include <cstring>
     6 #include <queue>
     7 #include <stack>
     8 #include <map>
     9 #include <vector>
    10 #include <cstdlib>
    11 #include <string>
    12 
    13 #define PI acos((double)-1)
    14 #define E exp(double(1))
    15 using namespace std;
    16 
    17 int main (void)
    18 {
    19     int t;
    20     cin>>t;
    21     getchar();
    22     while(t--)
    23     {
    24         long long num[5],ans=0;
    25         char op[5],c;
    26         scanf("%lld",&num[1]);
    27         if(scanf("%c",&c)==EOF||c=='
    ')
    28         {
    29             printf("%lld
    ",num[1]);continue;
    30         }
    31         op[2]=c;//3为当前操作数
    32         scanf("%lld",&num[2]);
    33         while(scanf("%c",&op[3])!=EOF && op[3]!='
    ')
    34         {
    35             scanf("%lld",&num[3]);
    36             if(op[3]=='*'||op[3]=='/')
    37             {
    38                 if(op[2]=='+'||op[2]=='-')
    39                 {
    40                     if(op[3]=='*')num[2]*=num[3];
    41                     else num[2]/=num[3];
    42 
    43                 }
    44                 else
    45                 {
    46                     if(op[2]=='*') num[1]*=num[2];
    47                     else num[1]/=num[2];
    48                     num[2]=num[3];
    49                     op[2]=op[3];
    50                 }
    51 
    52             }
    53             else
    54             {
    55                 if(op[2]=='+'||op[2]=='-')
    56                 {
    57                     if(op[2]=='+') num[1]+=num[2];
    58                     else num[1]-=num[2];
    59                     num[2]=num[3];
    60                     op[2]=op[3];
    61                 }
    62                 else
    63                 {
    64                      if(op[2]=='*') num[1]*=num[2];
    65                      else   num[1]/=num[2];
    66                      num[2]=num[3];
    67                      op[2]=op[3];
    68                 }
    69             }
    70         }
    71         if(op[2]=='*')  ans=num[1]*num[2];
    72             else if(op[2]=='/') ans=num[1]/num[2];
    73             else if(op[2]=='+') ans=num[1]+num[2];
    74             else    ans=num[1]-num[2];
    75         printf("%lld
    ",ans);
    76     }
    77 
    78     return 0;
    79 }
    View Code
  • 相关阅读:
    【2020-11-01】从身边人开始输出自己的价值
    【一句日历】2020年11月
    【2020-10-31】继续解锁自己内心的矛盾
    【2020-10-29】静下心来,书中自有黄金
    【2020-10-28】平凡人终归还是要回归到小日子上
    【2020-10-27】抗衡自己的摇摆幅度
    【2020-10-26】市场驱动学习和进步
    【2020-10-25】窜着野炊的心干着农民的活
    暑假集训2016day3T1 欧拉回路(UOJ #117欧拉回路)(史上最全的欧拉回路纯无向图/有向图解析)
    leetcode1282
  • 原文地址:https://www.cnblogs.com/weeping/p/5456145.html
Copyright © 2011-2022 走看看