No.619 CardShuffle
タグ : / 解いたユーザー数 40
作問者 :
くれちー
/ テスター :
問題文
12月も折り返し、Y君はクリスマスカードの準備をしているようです。
0 1 2 3 4 5 6 7 8 9 + * のいずれか一つが書かれたカード $N$ 枚の列 $C_1, C_2, \dots, C_N$ が与えられます。すべてのカードは、+ または * の書かれた演算子カードと、それ以外の数字カードの2種類に分類されます。$C_1, C_N$ は数字カードで、数字カードと演算子カードは1枚ずつ交互に並んでいます。
数字カードを1桁の整数、演算子カード + を加算、* を乗算と見なしたとき、カード列 $C_X, C_{X+1}, \dots, C_Y$ がつくる式の値を $f(X, Y)$ とします。例えば、$C_1 =$ 5、$C_2 =$ +、$C_3 =$ 7、$C_4 =$ *、$C_5 =$ 4、$C_6 =$ +、$C_7 =$ 1 のとき、$f(1, 5) = 5 + 7 \times 4 = 5 + 28 = 33$、$f(5, 7) = 4 + 1 = 5$ となります。
以下の2種類のクエリが $Q$ 個与えられるので、これを順番に処理してください。
- 交換クエリ:同じ種類のカード $C_X$ と $C_Y$ を交換する。
- 質問クエリ:$f(X, Y) \bmod (10 ^ 9 + 7)$ を出力する。
入力
$N$ $C_1$ $C_2$ $\dots$ $C_N$ $Q$ $T_1$ $X_1$ $Y_1$ $T_2$ $X_2$ $Y_2$ $\vdots$ $T_Q$ $X_Q$ $Y_Q$
数値はすべて整数です。以下の制約を満たします。
- $3 \le N \le 10^5-1$
- $N$ は奇数
- $i$ が奇数ならば $C_i \in \{$
0,1,2,3,4,5,6,7,8,9$\}$ - $i$ が偶数ならば $C_i \in \{$
+,*$\}$ - $1 \le Q \le 10^5$
- $i \ne Q$ ならば $T_i \in \{$
!,?$\}$ - $T_Q =$
? - $1 \le X_i \lt Y_i \le N$
- $T_i =$
!のとき、これは交換クエリを表し、 - カード $C_{X_i}$ と $C_{Y_i}$ の種類は同じ (すなわち $X_i \equiv Y_i \pmod{2}$)
- $T_i =$
?のとき、これは質問クエリを表し、 - $X_i, Y_i$ は奇数
出力
すべての質問クエリに対して1行ずつ出力し、最後に改行してください。
サンプル
サンプル1
入力
7 5 + 7 * 4 + 1 6 ? 1 5 ? 5 7 ! 2 4 ? 1 5 ! 3 7 ? 1 7
出力
33 5 39 16
問題文の例です。
5+7*4+1- $f(1, 5) = 5 + 7 \times 4 = 33$
- $f(5, 7) = 4 + 1 = 5$
5*7+4+1- $f(1, 5) = 5 \times 7 + 4 = 39$
5*1+4+7- $f(1, 7) = 5 \times 1 + 4 + 7 = 16$
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。