B - P-CASカードと高橋君
Editorial
/
高橋君は来る 7 月 27 日の土用の丑の日に備えて、高級なうなぎを通販で買うことにしました。支払いはネット銀行を通して行います。
高橋君が利用しているネット銀行のカードの裏には、下図のような縦 9 文字 ×横 9 文字の数字から成る乱数表がついています。支払う時は、この乱数表の指定された位置から縦横斜めの中で指定された向きに 4 文字連続で抜き出して入力し、それが正しいかによって本人確認を行います。
下図は「上から 1 文字目、左から 1 文字目」の位置から「右下斜め」の方向が指定された時の 4 文字を抜き出した例です。この場合は 7930 が入力する数字になります。 乱数表の一番端の文字を抜き出した後もさらに文字を抜き出す必要がある場合は、向きを変更して残りの文字を抜き出します。向きの変更は以下のように行います。
入力は以下の形式で標準入力から与えられる。
指定された位置から指定された方向に数字を 4 文字抜き出し、それらの数字を標準出力に 1 行で出力せよ。
なお、最後には改行を出力せよ。
Time Limit: 2 sec / Memory Limit: 64 MB
問題文
高橋君が利用しているネット銀行のカードの裏には、下図のような縦 9 文字 ×横 9 文字の数字から成る乱数表がついています。支払う時は、この乱数表の指定された位置から縦横斜めの中で指定された向きに 4 文字連続で抜き出して入力し、それが正しいかによって本人確認を行います。
下図は「上から 1 文字目、左から 1 文字目」の位置から「右下斜め」の方向が指定された時の 4 文字を抜き出した例です。この場合は 7930 が入力する数字になります。 乱数表の一番端の文字を抜き出した後もさらに文字を抜き出す必要がある場合は、向きを変更して残りの文字を抜き出します。向きの変更は以下のように行います。
- 読み込み時に進んでいた方向が上下左右の場合
- 向きを 180 度変える
- 読み込み時に進んでいた方向が斜めの場合
- 角で向きを変更する場合
- 向きを 180 度変える
- 左右の端で向きを変更する場合
- 左右への向きのみ逆にし、上下への向きはそのままにする
- 上下の端で向きを変更する場合
- 上下への向きのみ逆にし、左右への向きはそのままにする
- 角で向きを変更する場合
入力
x y W c_{11}c_{12}…c_{19} c_{21}c_{22}…c_{29} : : c_{91}c_{92}…c_{99}
- 入力は 10 行ある。
- 1 行目には、抜き出す最初の数字が左から何文字目かを表す整数 x(1≦x≦9)、抜き出す最初の数字が上から何文字目かを表す整数 y(1≦y≦9)、抜き出す方向を表す W が空白で区切られて与えられる。
- 抜き出す方向 W は
R
、L
、U
、D
、RU
、RD
、LU
、LD
のいずれかで与えられ、抜き出す方向が以下であることを表す。 R
: 右方向L
: 左方向U
: 上方向D
: 下方向RU
: 右上に斜め方向RD
: 右下に斜め方向LU
: 左上に斜め方向LD
: 左下に斜め方向- 2 行目からの 9 行は、乱数表の数字を表す整数 c_{ij}(1≦i,j≦9) が与えられる。
- i 行目 j 番目の数字は、乱数表の上から i 番目、左から j 番目の数字が c_{ij} であることを表す。
- c_{ij} は
0
-9
のいずれかである。
出力
なお、最後には改行を出力せよ。
入力例 1
3 5 R 790319030 091076399 143245946 590051196 398226115 442567154 112705290 716433235 221041645
出力例 1
8226
- 乱数表から抜き出す 4 文字は下図のように右方向に抜き出します。
入力例 2
8 9 LU 206932999 471100777 973172688 108989704 246954192 399039569 944715218 003664867 219006823
出力例 2
2853
- 乱数表から抜き出す 4 文字は下図のように左上方向に抜き出します。
入力例 3
5 7 D 271573743 915078603 102553534 996473623 595593497 573572507 340348994 253066837 643845096
出力例 3
4646
- 下図のように下方向へ 3 文字抜き出した後、向きを上方向に変えて残りの 1 文字を抜き出します。
入力例 4
2 2 LU 729142134 509607882 640003027 215270061 214055727 745319402 777708131 018697986 277156993
出力例 4
0700
- 下図のように左上方向へ 2 文字抜き出した後、向きを右下方向に変えて残りの 2 文字を抜き出します。
入力例 5
8 7 RD 985877833 469488482 218647263 856777094 012249580 845463670 919136580 011130808 874387671
出力例 5
8878
- 下図のように右下方向へ 1 文字抜き出した後、向きを左下方向に変えて残りの文字を抜き出します。
- 3 文字目まで抜き出した後、さらに向きを左上方向に変えて残りの 1 文字を抜き出します。