#jag2017summerday1e. [jag2017summer_day1_e]ベクトル式
[jag2017summer_day1_e]ベクトル式
問題文
以下のようなBNFで表されるベクトル式 が与えられるので、計算してください。
<expr> ::= <number> | "("<expr>"*"<expr>")" | "("<vector>"*"<vector>")"
<vector> ::= "("<expr>","<expr>")" | "("<expr>"*"<vector>")" | "("<vector>"*"<expr>")"
<number> ::= <digit> | <number><digit>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<expr>
の値は整数(スカラー)、<vector>
の値は二次元ベクトルとなります。 演算子 *
のこの問題での意味は以下の通りです。
<expr>
どうし場合:整数の積を表す。<vector>
どうしの場合:ベクトルの内積を表す。<expr>
と<vector>
の場合:ベクトルのスカラー倍を表す。
ただし、答えは非常に大きくなることがあるため、 で割った余りで出力してください。
制約
- は問題文中のBNFの
<expr>
で表される式である。
入力
入力は以下の形式で標準入力から与えられる。
出力
式の計算結果を で割った余りを出力せよ。
入力例 1
((1,2)*(3,4))
出力例 1
11
ベクトル とベクトル の内積を計算すると となります。
入力例 2
((((1*2),3)*4)*(((5,6)*(7,8))*(9,10)))
出力例 2
15936
入力例 3
0000000000099824435399824435399824435399824435399824435398
出力例 3
98