아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

K-계산기

시간 제한1.5초메모리 제한512 MB

요약
유리수 피연산자로 이루어진 식에서 이전 결과의 모듈러 값과 u_i를 XOR한 위치의 연산자를 적용하고, 그 연산자와 피연산자를 하나의 결과로 합치는 과정을 반복한다.
난이도

어려움10점 중 8점

유형
연결 리스트, 수학, 정수론, 시뮬레이션
정답자
아직 제출이 없습니다

문제

두유노 김치?

두유노 이국렬?

두유노 계산기? 펄~럭

국렬이는 세 번이나 계산기 문제를 내놓고 또 계산기 문제를 냈다. 언제까지 나오는지 지켜보자. 당신은 또 계산기 문제를 만나서 귀찮지만 상금을 얻기 위해서 주어진 수식을 규칙에 맞게 계산해야 한다.

국렬이는 세 번씩이나 같은 형식의 수식을 줬고, 국렬이, 참가자, 검수진 모두가 파싱으로부터 고통받는 것을 원하지 않기에 수식 형태를 바꿨다. 이번 입력으로 주어지는 수식은 수와 연산자가 번갈아 가면서 나오며 수와 연산자 사이에 띄어쓰기가 있다. 수식의 ii번째 수를 XiX_i, ii번째 연산자를 OpiOp_i로 표시하면 수가 NN개인 식을 X1X_1 Op1Op_1 X2X_2 Op2Op_2 ... OpN−1Op_{N-1} XNX_N로 표기할 수 있다. 연산자의 종류는 +, -, *, /가 있다. 마지막에 연산자가 있는 경우와 XiX_i가 음수인 경우, 앞에 불필요한 00이 있는 경우는 입력으로 주어지지 않는다. 즉, −1−1-1-1, 2+−32+-3, 001+0002001+0002 같은 경우는 입력으로 주어지지 않는다.

NN개의 수로 이루어진 수식과 N−1N-1 개의 양의 정수 uiu_i가 주어진다. 다음 규칙에 맞게 계산할 것이다.

  1. 다음을 N−1N-1번 반복한다.
  2. 가장 최근에 계산한 결과값을 기약분수 P/QP/Q로 표현했을 때, QQ의 109+710^9+7에 대한 곱셈 역원 Q−1Q^{-1}에 대해 P×Q−1P \times Q^{-1}을 109+710^9+7로 나눈 나머지를 vv라고 하자. 이전에 계산한 결과값이 없는 경우 v=0v=0이다.
  3. (ui⊕v)(u_i \oplus v) 번째 연산자를 계산하고, 이 때의 결과값을 출력한다. 여기서 ⊕\oplus는 bitwise XOR를 의미한다.
  4. 계산한 연산자와 피연산자를 제거하고, 그 자리에 결과값을 넣는다.

예를 들어서 수식 3−2×5+103 - 2 \times 5 + 10과 양의 정수 u=[1,3,14]u = [1,3,14]가 주어지면 다음과 같이 계산한다.

  1. 1⊕0=11 \oplus 0 = 1이기에 1번째 연산자를 계산한다. 이에 대한 결과값은 3−2=13-2=1로 11을 출력한 뒤에 수식은 1×5+101 \times 5 + 10이 된다.
  2. 3⊕1=23 \oplus 1 = 2이기에 2번째 연산자를 계산한다. 이에 대한 결과값은 5+10=155+10 =15로 1515을 출력한 뒤에 수식은 1×151 \times 15가 된다.
  3. 14⊕15=114 \oplus 15 = 1이기에 1번째 연산자를 계산한다. 이에 대한 결과값은 1×15=151 \times 15 =15로 1515을 출력한다.

이 문제에서의 나눗셈은 실수 나눗셈으로 생각한다. 즉, 5/25/2는 22가 아닌 2.52.5다.

이처럼 수식을 계산하는 프로그램을 짜보자.

입력

첫 번째 줄에 피연산자의 개수인 NN이 주어진다. (2≤N≤500 0002 \le N \le 500\,000)

두 번째 줄에 피연산자와 +, -, *, /로만 이루어진 수식이 주어진다. 피연산자와 연산자는 공백으로 구분해서 주어지며, 피연산자는 00 이상 109+610^9+6 이하의 정수다.

세 번째 줄에 u1u_1, ..., uN−1u_{N-1}이 공백으로 구분되어 주어진다. (1≤ui⊕v≤N−i1 \le u_i \oplus v \le N - i)

계산 과정 중에 00으로 나누는 경우는 주어지지 않는다.

출력

각 ii번째 줄에 uiu_i에 대한 결과 값을 기약분수 P/QP/Q로 표현했을 때, QQ의 109+710^9+7에 대한 곱셈 역원 Q−1Q^{-1}에 대해 P×Q−1P \times Q^{-1}을 109+710^9+7로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    4
    3 - 2 * 5 + 10
    1 3 14
    
    예상 출력
    1
    15
    15