| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 4 초 | 1024 MB | 3 | 3 | 3 | 100.000% |
하이비는 최근 바이히가 만든 두뇌 게임 Operation: Path Query, Remastered - Static Tree (Updated Version)을 플레이하고 있다. 이 게임의 규칙은 다음과 같다.
예를 들어, 다음과 같은 트리에서 $1$번 정점에서 출발해서 $4$번 정점으로 끝나는 경로 내의 카드를 모두 이어 붙인다고 해보자.
경로 내의 카드를 모두 이어 붙인 뒤 계산하면 $07\,23 + 27\,06\,24 - 35\,13\,26 = -79\,979$가 나온다.
하이비는 이 게임을 자주 플레이하다 보니, 매 플레이마다 모든 질문에 대해 답을 정확히 맞히는 경지에 이르렀다. 이를 바이히에게 증명하기 위해, 하이비는 게임의 진행 과정이 주어질 때 각 질문에 대한 답을 계산해 주는 프로그램을 작성해서 보여주기로 했다.
첫째 줄에는 트리의 정점 개수 $N$과 플레이하는 라운드의 수 $Q$가 공백으로 구분되어 주어진다. $(1\le N,Q\le 500\, 000)$
둘째 줄부터 $N$개의 줄에 걸쳐, $i+1$번째 줄에는 $i$번 정점에 놓인 두 정수 카드 $A_i$와 $B_i$가 공백으로 구분되어 주어진다. $(00\le A_i,B_i\le 99)$
$N+2$번째 줄부터 $N-1$개의 줄에 걸쳐, $i+N+1$번째 줄에는 $i$번 간선이 잇는 두 정점 $v_i$, $w_i$과 해당 간선에 놓인 연산자 카드 $P_i$, 정수 카드 $C_i$가 공백으로 구분되어 주어진다. $(1\le v_i,w_i\le N;$ $00\le C_i\le 99;$ $P_i$는 $+$, $-$, $\times$, $\div$ 중 하나$)$
$2N+1$번째 줄부터 $Q$개의 줄에 걸쳐 문제에서 나오는 이벤트를 의미하는 글자 $t$와 이벤트를 나타내는 두 값 $x$, $y$가 공백으로 구분되어 주어진다.
?: 질문 이벤트이다. 이때 $x$, $y$는 $1 \le x, y \le N$를 만족하는 정수이다.A: $A_x$ 변경 이벤트이다. 이때 $x$, $y$는 $1 \le x \le N;$ $00 \le y \le 99$를 만족하는 정수이다.B: $B_x$ 변경 이벤트이다. 이때 $x$, $y$는 $1 \le x \le N;$ $00 \le y \le 99$를 만족하는 정수이다.P: $P_x$ 변경 이벤트이다. 이때 $x$는 $1 \le x \le N-1$를 만족하는 정수이고, $y$는 $+$, $-$, $\times$, $\div$ 중 하나이다.C: $C_x$ 변경 이벤트이다. 이때 $x$, $y$는 $1 \le x \le N-1;$ $00 \le y \le 99$를 만족하는 정수이다.정수 카드에 적히는 수는 항상 $2$자리 정수로 주어진다. 이를 위해 앞에 불필요한 $0$이 붙을 수 있다.
연산자 카드에 적히는 연산자 $+$, $-$, $\times$, $\div$은 각각 글자 +, -, *, /로 주어진다.
각 질문 이벤트에 대해 질문의 답을 기약분수로 나타낸 값을 $p/q$라고 하자. 이때, $qr\equiv p\pmod{1\, 208\, 017}$을 만족하는 $0$ 이상 $1\, 208\, 017$ 미만인 정수 $r$을 출력한다. 문제의 제한 내에서 이 정수는 각 질문에 대해 유일함을 보일 수 있다.
$1\, 208\, 017$은 소수이다.
5 6 07 23 27 63 06 24 13 26 92 31 1 3 + 27 3 4 - 35 3 5 + 14 2 5 / 16 ? 1 4 A 1 87 P 3 * B 5 09 C 4 61 ? 2 1
1128038 975864
처음 들어오는 질문은 $1$번 정점에서 $4$번 정점으로 가는 경로 위의 카드를 나열해야 한다. 이를 나열하면 $07\, 23+27\, 06\, 24-35\, 13\, 26$이 나오고, 이 값은 $-79\, 277$이다. 이때 $1\cdot 1\, 128\, 038\equiv -79\, 979\pmod{1\, 208\, 017}$이므로, $1\, 128\, 038$을 출력하면 된다.
이후 $4$번의 카드 변경 이벤트가 주어진다.
이후로 들어오는 질문은 $2$번 정점에서 $1$번 정점으로 가는 경로 위의 카드를 나열해야 한다. 이를 나열하면 $27\, 63\div 61\, 92\, 09\times 14\, 06\, 24+27\, 87\, 23$이 나오고, 이 값은 $\displaystyle \frac{19\, 219\, 592\, 691}{68\, 801}$이다. 이때 $68\, 801\cdot 975\, 864\equiv 19\, 219\, 592\, 691\pmod{1\, 208\, 017}$이므로, $975\, 864$를 출력하면 된다.
