zoukankan      html  css  js  c++  java
  • ZOJ

    题目链接

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3930

    题意
    给出一串字符串

    如果是 ‘+’ ‘-’ ‘*’ ‘/’ 那么需要在前后分别加一个空格

    如果遇到 纯数字 直接输出

    如果遇到 adx 这样的

    要化成 ([dx] + [dx] + [dx]) (a 个 dx)

    但是要注意 x 和上面的纯数字 都可能是大数 然后 a 可以用long long 保存

    还有 1dx 或者 dx 都是 输出 [dx] 两端没有括号

    AC代码

    #include <cstdio>
    #include <cstring>
    #include <ctype.h>
    #include <cstdlib>
    #include <cmath>
    #include <climits>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <deque>
    #include <vector>
    #include <queue>
    #include <string>
    #include <map>
    #include <stack>
    #include <set>
    #include <numeric>
    #include <sstream>
    #include <iomanip>
    #include <limits>
    
    #define CLR(a) memset(a, 0, sizeof(a))
    #define pb push_back
    
    using namespace std;
    typedef long long ll;
    typedef long double ld;
    typedef unsigned long long ull;
    typedef pair <int, int> pii;
    typedef pair <ll, ll> pll;
    typedef pair<string, int> psi;
    typedef pair<string, string> pss;
    
    const double PI = acos(-1);
    const double E = exp(1);
    const double eps = 1e-30;
    
    const int INF = 0x3f3f3f3f;
    const int maxn = 5e4 + 5;
    const int MOD = 1e9 + 7;
    
    ll tran(string s)
    {
        ll ans = 0;
        int len = s.size();
        for (int i = 0; i < len; i++)
            ans = ans * 10 + s[i] - '0';
        return ans;
    }
    
    int main()
    {
        int T;
        scanf("%d ", &T);
        while (T--)
        {
            string s;
            getline(cin, s);
            int len = s.size();
            string temp = "";
            for (int i = 0; i < len; i++)
            {
                if (s[i] == ' ')
                    continue;
                else if (s[i] == '(' || s[i] == ')')
                    printf("%c", s[i]);
                else if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')
                    printf(" %c ", s[i]);
                else if (isdigit(s[i]))
                {
                    temp.clear();
                    temp = temp + s[i];
                    i++;
                    while (i < len && isdigit(s[i]))
                        temp = temp + s[i++];
                    if (s[i] == 'd')
                    {
                        ll num = tran(temp);
                        if (num != 1)
                            printf("(");
                        temp.clear();
                        temp = temp + "[d";
                        i++;
                        while (i < len && isdigit(s[i]))
                            temp = temp + s[i++];
                        i--;
                        temp = temp + ']';
                        int len = temp.size();
                        for (ll i = 0; i < num; i++)
                        {
                            cout << temp;
                            if (i <= num - 2)
                                printf(" + ");
                        }
                        if (num != 1)
                            printf(")");
                    }
                    else
                    {
                        i--;
                        cout << temp;
                    }
    
                }
                else if (s[i] == 'd')
                {
                    printf("[d");
                    i++;
                    while (isdigit(s[i]) && i < len)
                    {
                        printf("%c", s[i++]);
                    }
                    i--;
                    printf("]");
                }
            }
            printf(" = [Result]
    ");
        }
    }
  • 相关阅读:
    【C++17】std::optional

    【GDB 】GDB基本命令
    【二叉树系列 | 01】二叉树遍历
    【coredump | 01】coredump的阐述
    【C++ Template | 06】std::enable_if和SFINAE
    std::dclval 使用教程
    系统设计实践(03)- Instagram社交服务
    系统设计实践(02)- 文本存储服务
    系统设计实践(01)
  • 原文地址:https://www.cnblogs.com/Dup4/p/9433141.html
Copyright © 2011-2022 走看看