問題一覧 > 通常問題

No.619 CardShuffle

レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 40
作問者 : くれちー / テスター : 37zigen
8 ProblemId : 2029 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2017-12-19 01:26:17
Advent Calendar Contest Advent Calendar 2017 19日目の問題です。

問題文

12月も折り返し、Y君はクリスマスカードの準備をしているようです。

0 1 2 3 4 5 6 7 8 9 + * のいずれか一つが書かれたカード N 枚の列 C1,C2,,CN が与えられます。すべてのカードは、+ または * の書かれた演算子カードと、それ以外の数字カードの2種類に分類されます。C1,CN は数字カードで、数字カードと演算子カードは1枚ずつ交互に並んでいます。

数字カードを1桁の整数、演算子カード + を加算、* を乗算と見なしたとき、カード列 CX,CX+1,,CY がつくる式の値を f(X,Y) とします。例えば、C1= 5C2= +C3= 7C4= *C5= 4C6= +C7= 1 のとき、f(1,5)=5+7×4=5+28=33f(5,7)=4+1=5 となります。

以下の2種類のクエリが Q 個与えられるので、これを順番に処理してください。

  • 交換クエリ:同じ種類のカード CXCY を交換する。
  • 質問クエリf(X,Y)mod(109+7) を出力する。

入力

N
C1 C2  CN
Q
T1 X1 Y1
T2 X2 Y2

TQ XQ YQ

数値はすべて整数です。以下の制約を満たします。

  • 3N1051
  • N は奇数
  • i が奇数ならば Ci{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
  • i が偶数ならば Ci{ +, * }
  • 1Q105
  • iQ ならば Ti{ !, ? }
  • TQ= ?
  • 1Xi<YiN
  • Ti= ! のとき、これは交換クエリを表し、
    • カード CXiCYi の種類は同じ (すなわち XiYi(mod2))
  • Ti= ? のとき、これは質問クエリを表し、
    • Xi,Yi は奇数

出力

すべての質問クエリに対して1行ずつ出力し、最後に改行してください。

サンプル

サンプル1
入力
7
5 + 7 * 4 + 1
6
? 1 5
? 5 7
! 2 4
? 1 5
! 3 7
? 1 7
出力
33
5
39
16

問題文の例です。

  1. 5 + 7 * 4 + 1
  2. f(1,5)=5+7×4=33
  3. f(5,7)=4+1=5
  4. 5 * 7 + 4 + 1
  5. f(1,5)=5×7+4=39
  6. 5 * 1 + 4 + 7
  7. f(1,7)=5×1+4+7=16

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。