8 条题解

  • 9
    @ 2022-8-7 21:57:31
    #include<bits/stdc++.h>
    using namespace std;
    long long now,ans; // long long防止超int
    char suan='+'; // suan=算  默认为加法(因为第一串数字必定为加号<除非有负号>)
    string s;
    int main(){
        cin>>s;
        int len=s.length(); // 降低时间复杂度
        for(int i=0;i<len;i++){
            if(s[i]=='+'||s[i]=='-'){ // 如果遇到运算符就把已经存好的数字加入ans中
                if(suan=='+'){ // 加减法分开计算
                    ans+=now;
                }else{
                    ans-=now;
                }
                now=0; // 重置数字
                suan=s[i]; // 重新设置运算符
            }else{
                now=now*10+s[i]-'a'; // 修改当前数字
            }
        }
        if(suan=='+'){ // 因为最后一串数字结尾没有运算符,无法在for中进行运算,所以要这里补上
            ans+=now;
        }else{
            ans-=now;
        }
        cout<<ans;
        return 0;
    }
    
    • 3
      @ 2021-8-24 10:46:16

      请注意:不要在 8 月 25 日 10:30 之前发布本题任何形式的题解,否则你的题解可能会被删除!

      • 2
        @ 2021-8-25 10:32:36

        字符串解析

        int main()
        {
            ios::sync_with_stdio(false);
            cin.tie(0);
            cin >> s;
            long long now = 0;
            long long ans = 0;
            char last = '+';
            for (int i = 0; i < s.length(); i++)
            {
                if (s[i] == '+' || s[i] == '-')
                {
                    if (last == '+')
                        ans += now;
                    else
                        ans -= now;
                    last = s[i];
                    now = 0;
                }
                else if (s[i] >= 'a' && s[i] <= 'j')
                    now = now * 10 + (s[i] - 'a');
            }
            if (last == '+')
                ans += now;
            else
                ans -= now;
            cout << ans << endl;
            return 0
        }
        
      • 0
        @ 2023-8-6 17:49:52

        十年OI一场空 不开long long见祖宗

        cin >> s;
            for (int i = s.size() - 1; i >= 0; i--)
            {   
                if (s[i] == '+')
                {
                    sum += tmp;
                    tmp = 0;
                    n = 0;
                }
                else if (s[i] == '-')
                {
                    sum += tmp*-1;
                    tmp = 0;
                    n = 0;
                }
                else if (i == 0)
                {
                    tmp += pow(10, n) * (s[i] - 'a');
                    sum += tmp;
                }
                else
                {  
                    tmp += pow(10, n) * (s[i] - 'a');
                    n++;
                }
            }
            cout << sum;
        
        • -2
          @ 2024-5-18 21:25:11

          AJ表达式求值

          题目描述:

          千夜老师定义了一种表达式为AJ表达式,这种表达式的规则是:

          只包含加减号及'a'到'j'的小写英文字符;

          表达式的值为将'a'到'j'分别转换为 0到9后的数学表达式的值(保证转换后的表达式符合数学规范)。

          AJ表达式的长度不超过10000,且连续的英文字母长度不超过10。

          输入格式:

          输入一个AJ表达式。

          输出格式:

          输出AJ表达式的值。

          样例:

          输入数据1:

          cab+b-ba
          

          输出数据1:

          192
          

          样例1解释:

          201+1-10=192
          

          数据范围:

          对于100%的数据:连续的英文字母长度不超过10。

          • -3
            @ 2022-4-24 16:57:53

            写题解请注意

            鼓励大家写题解,但注意题解格式。

            题解一定要有思路解析或代码注释,能否让别人理解你的思路

            也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

            给代码两端加上这个会舒服一些

            ```cpp

            你的代码

            ```

            </span>

            这个点在键盘的左上角tab上面那个键,注意切换输入法

            #include<iostream>
            using namespace std;
            int main()
            {
                int n;
                cin>>n;//这是一个注释
                return 0;
            } 
            

            请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

            抄袭题解一经发现直接取消成绩。

            题解被删除的可能

            1. 代码不符合格式规范
            2. 没有思路讲解或者没有注释,
            3. 无意义的题解

            大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

            • -4
              @ 2023-10-11 15:54:40

              long long sum=0; deque<long long> q; queue<char> c; int main(){ cin >> s; for(int i=0; i<s.size(); ++i){ if(s[i]>='a' && s[i]<='j'){ long long op=0; while(s.size()>i && s[i]>='a' && s[i]<='j'){ op=op*10+(int)(s[i]-'a'); ++i; } --i; q.push_back(op); } else c.push(s[i]); } while(c.size()){ char ch=c.front(); c.pop(); long long x=q.front(); q.pop_front(); long long y=q.front(); q.pop_front(); if(ch=='-')q.push_front(x-y); else q.push_front(x+y); } 用队列,复杂度O(n),开long long 是防止超int

              • -4
                @ 2022-8-29 20:58:44

                暴力嘿嘿

                    for (int i=0;s[i]>='a' && s[i]<='j';i++)
                    {
                        h=i;
                        ans=ans*10+s[i]-'a';
                    }
                    h+=2;
                    char bl=s[h-1];
                    for (int i=h;i<s.length();i++)
                    {
                        if (s[i]=='+')
                        {
                            if (bl=='+')
                            {
                                ans+=x;
                            }
                            else
                            {
                                ans-=x;
                            }
                            x=0;
                            bl=s[i];
                        }
                        else if (s[i]=='-')
                        {
                            if (bl=='+')
                            {
                                ans+=x;
                            }
                            else
                            {
                                ans-=x;
                            }
                            x=0;
                            bl=s[i];
                        }
                        else
                        {
                            x=x*10+s[i]-'a';
                        }
                    }
                    if (bl=='+')
                    {
                        ans+=x;
                    }
                    else
                    {
                        ans-=x;
                    }
                
                • 1

                信息

                ID
                1226
                时间
                1000ms
                内存
                256MiB
                难度
                5
                标签
                递交数
                450
                已通过
                190
                上传者