#P7088. [NWRRC 2013] J
[NWRRC 2013] J
题目描述
The programming language, developed in the early by Kenneth . Iverson and Roger Hui, is a synthesis of APL (also by Iverson) and the FP and FL function-level languages created by John Backus.
Wikipedia. (programming language)
APL language family is famous for its support of advanced operations on vectors and arrays, and is not an exception. For example, all unary and binary numeric operations in these languages by default are applicable to vectors and arrays of different dimensions. Plus operation can add not only scalars, like in other languages, but also scalars and vectors (the scalar is added to each component of the vector), or vectors and vectors (the vectors are added component-wise).
The expressive power of is amazing (as well as its cryptic syntax), but for this problem we need just a small subset of the language. We consider a single expression, where we may use one vector variable , one scalar variable -- the length of the vector , and the following operations:
We can add subtract or multiply two vectors, vector and scalar, or two scalars.
We can use unary minus and unary squaring operations for scalars and vectors
We can fold a vector with plus operation -- that is, compute the sum of a vector (unary operation).
Operations are evaluated right-to-left, natural precedence of operations is ignored in . The order of evaluation can be altered by parentheses. More precisely the syntax is specified in the following BNF.
$〈expressio_n〉 ::= 〈ter_m〉 | 〈ter_m〉 (‘+' | ‘-' | ‘ \times ') 〈expressio_n〉 | (‘-' | ‘ \times :' | ‘+/') 〈expressio_n〉$
$〈ter_m〉 ::= ‘('〈expressio_n〉‘)' | ‘X' | ‘N' | 〈number〉$
. . .
To correctly impose one more limitation on expression syntax, let us define complexity of an expression:
complexity of scalars (numbers, and result of fold) is zero;
complexity of is one;
complexity of addition and subtraction is the maximum of their operands' complexities;
complexity of multiplication is the sum of its operands' complexities;
complexity of unary squaring is twice the complexity of its operand.
For example, the complexity of expression is , while the complexity of its subexpression is .
Your program is given a scalar-valued expression and a value of the vector , and it should compute the expression result modulo The complexity of each subexpression in the given expression does not exceed .
输入格式
The first line contains one integer number -- the length of the vector .
The second line contains integers -- components of the vector
The third line contains the expression to be computed, a non-empty string of not more than symbols. Each number in the expression is less than . The fold is never applied to a scalar.
输出格式
Output a single integer number -- the expression result modulo
5
1 2 3 4 5
+/*:X
55
5
1 2 3 4 5
N++/X-X+1
0
3
11 56 37
+/(3-+/*:*:X)-X**:X
964602515
提示
Time limit: 2 s, Memory limit: 256 MB.