• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 7,comments - 3,trackbacks - 0

            Professor Maple teaches mathematics in a university. He have invented a function for the purpose of obtaining the operands from an expression. The function named op(i,e) can be described as follows: The expression e may be divided into sub-expression(s) by the operator, which has the lowest priority in the expression. For example, the expression “a*b+b*c+c*d” should be divided into three sub-expressions “a*b”, “b*c” and “c*d”, because the operator “+” has the lowest priority. The purpose of this function is to extract the ith sub-expression as the result. So, in the example above, op(2,e)=b*c.

            If we regard the sub-expression as the main expression, it might be divided again and again. Obviously, the dividing process is recursive. As you see, the following example is much more complex:

            Let p:=a^b*c+(d*c)^f*z+b
            op(1,op(1,op(2,p)))=(d*c)
            op(1,op(1,op(1,op(2,p))))=d*c
            op(2,op(2,p))=z
            op(3,p)=b
            op(1,op(3,p))=b

            Professor Maple is so lazy that he would leave the work to computer rather than do it himself, when the expression is long and complicated. Of course, without your program, the computer won’t work out the result automatically.

            Input

            The input file contains several test cases. The last test case in the input file is followed by a line containing a symbol “*”, indicating the end of the input data. Each test case consists of two parts. The first part describes the expression, while the second part contains several questions, which should be calculated according to the expression.

            The first line of each test case contains an expression consists of the expression name, “:=” and the content of the expression. The expression name is a lowercase. And the content is composed by lowercases and operators “+”, “(”, “)”, “*” and “^”. For example, here is a valid expression, p:=a^b*c+(d*c)^f*z+b. Among those operators, “(” and “)” have the highest priority. The operator “^” has a lower priority, and then “*”. The priority of the operator “+” is the lowest.

            The second line of each test case contains an integer n indicating n questions based on the above expression. This is followed by n lines. Each of them contains the description of one question, which consists of integers. For example, the question with three integers “2 1 1” describes the function op(1,op(1,op(2,e))). To compute this function, we have to keep to the following sequence: First, according to the first integer 2, divide the expression and extract the 2nd sub-expression. Then, according to the second integer 1, divide the sub-expression and extract the 1st one. Finally, according to the third integer 1, divide the outcome again, and extract the result.

            Output

            For each test case, display the expression name and a colon on the first line. Then display the result of each question on a line. The layout of the output is shown in the sample output.

            You may assume that all expressions and functions are always valid.

            Display a blank line between test cases.

            Sample Input

            p:=a^b*c+(d*c)^f*z+b 
            4
            2 1 1
            2 2
            3
            3 1
            a:=(x+y)
            3
            1
            1 2
            1 2 1
            *

            Sample Output

            Expression p: 
            op(1,op(1,op(2,p)))=(d*c)
            op(2,op(2,p))=z
            op(3,p)=b
            op(1,op(3,p))=b

            Expression a:
            op(1,a)=x+y
            op(2,op(1,a))=y
            op(1,op(2,op(1,a)))=y


            模擬題,處理好原字符串的優先級就行了。
            代碼:
            #include <iostream>
            #include 
            <cstring>
            #include 
            <cstdio>
            using namespace std;

            int find(char c)
            {
                
            if (c == '(' || c == ')'return 4;
                
            if (c == '^'return 3;
                
            if (c == '*'return 2;
                
            if (c == '+'return 1;
                
            return 1000;
            }

            char s[101];
            string e;
            int n, i, j, k, p[101], r[101], v[101], head, tail, x, ri, d = 0;

            int main()
            {
                
            while (scanf("%s", s), s[0!= '*')
                {
                    
            if (d++) puts("");
                    head 
            = 0;
                    e 
            = "";
                    
            while (s[head] != ':')
                      e 
            += s[head++];
                    head 
            += 2;
                    printf(
            "Expression %s:\n", e.c_str());
                    tail 
            = strlen(s) - 1;
                    x 
            = 0;
                    
            for (i = head; i <= tail; ++i)
                    {
                        
            if (s[i] == ')') x -= 4;
                        v[i] 
            = find(s[i]) + x;
                        
            if (s[i] == '(') x += 4;
                    }
                    scanf(
            "%d\n"&k);
                    
            for (i = 0; i < k; ++i)
                    {
                        ri 
            = 0;
                        
            int head1 = 3, min1, t;
                        tail 
            = strlen(s);
                        
            char c;
                        
            while ((c = getchar()) != '\n')
                        {
                            cin.putback(c);
                            scanf(
            "%d"&n);
                            r[ri
            ++= n;
                            min1 
            = 1000;
                            
            for (j = head1; j < tail; ++j)
                              
            if (v[j] < min1) min1 = v[j];
                            
            if (s[head1] == '(' && s[tail - 1== ')' && min1 == v[head1])
                            {
                                head1
            ++;
                                tail
            --;
                            }
                            
            else
                              
            if (head1 + 1 == tail){}
                            
            else
                            {
                                p[
            0= head1 - 1;
                                
            for (j = head1, t = 1; j < tail; ++j)
                                  
            if (v[j] == min1)
                                  {
                                      p[t
            ++= j;
                                  }
                                p[t] 
            = tail;
                                head1 
            = p[n - 1+ 1;
                                tail 
            = p[n];
                            }
                        }
                        
            for (j = ri - 1; j >= 0--j)
                          printf(
            "op(%d,", r[j]);
                        printf(
            "%s", e.c_str());
                        
            for (j = 0; j < ri; ++j)
                          printf(
            ")");
                        printf(
            "=");
                        
            for (j = head1; j < tail; ++j)
                            printf(
            "%c", s[j]);
                        puts(
            "");
                    }
                }
                
            return 0;
            }
            posted on 2011-10-25 19:53 LLawliet 閱讀(237) 評論(0)  編輯 收藏 引用 所屬分類: 模擬
            久久99热这里只有精品66| 久久毛片免费看一区二区三区| 久久久久久A亚洲欧洲AV冫| 久久国产午夜精品一区二区三区| 久久久久噜噜噜亚洲熟女综合 | 国产成年无码久久久久毛片| 久久综合亚洲欧美成人| 久久精品国产99国产电影网| 久久久久综合中文字幕| 午夜精品久久久久久99热| 国产99久久九九精品无码| 欧美日韩精品久久久免费观看| av无码久久久久不卡免费网站| 久久天天躁狠狠躁夜夜不卡| 亚洲AV无码久久精品蜜桃| 久久国产乱子伦精品免费午夜| 少妇久久久久久久久久| 人妻无码精品久久亚瑟影视| 97久久超碰国产精品2021| 中文字幕亚洲综合久久菠萝蜜| 国产精品久久国产精麻豆99网站| 九九精品久久久久久噜噜| 韩国三级中文字幕hd久久精品 | 久久亚洲精品成人AV| 久久精品无码免费不卡| 99久久99久久精品免费看蜜桃| 亚洲欧美日韩精品久久亚洲区| 久久久91精品国产一区二区三区 | 久久夜色精品国产亚洲| 久久91这里精品国产2020| 久久香蕉一级毛片| 国产精品久久一区二区三区| 久久亚洲AV成人无码电影| 久久精品亚洲AV久久久无码| 亚洲国产成人久久笫一页| 久久e热在这里只有国产中文精品99| 国产精品久久久久久久久| 99久久精品日本一区二区免费| 天天爽天天狠久久久综合麻豆| 久久久久久国产精品无码下载| 久久无码AV一区二区三区|