問題一覧 > 教育的問題

No.2444 一次変換と体積

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 29
作問者 : 👑 p-adic / テスター : 👑 Kazun
0 ProblemId : 8942 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-09-05 23:33:27

問題文

入力に 22 個の正整数 NNBB と、非負整数係数 33 次正方行列 AA が与えられます。

 

R3\mathbb{R}^3 の部分集合 {xR3ANx[0,1]3}\{x \in \mathbb{R}^3 \mid A^N x \in [0,1]^3\}XX と置き、XX の体積を VV と置きます。

 

ここでは正実数の逆数の定義を拡張し、010^{-1}\infty と定義し、1\infty^{-1}00 と定義します。また \inftyBB で割った余りを \infty と定義します。

この時 V1V^{-1} は非負整数または \infty であることが証明可能であるので、それを BB で割った余りを求めてください。

 

以下、集合の記法や体積などの厳密な定義を知らない人向けの説明をします。(クリックで開く)

 

R3\mathbb{R}^333 次元実数ベクトル全体の集合を表し、[0,1]3[0,1]^333 次元実数ベクトルであって各成分が 00 以上 11 以下であるもの全体の集合を表します。

XX の定義 {xR3ANx[0,1]3}\{x \in \mathbb{R}^3 \mid A^N x \in [0,1]^3\}ANx[0,1]3A^N x \in [0,1]^3 を満たす R3\mathbb{R}^3 の要素 xx 全体の集合を表します。

R3\mathbb{R}^3 の部分集合の体積は断りのない限りルベーグ測度を用いて定式化されます。具体的には、R3\mathbb{R}^3 の部分集合 UU がルベーグ可則である時にのみ UU の体積が定義され、その値は UUR3\mathbb{R}^3 のルベーグ測度に代入した値(または等価な言い換えとして、定数関数 11UU 上でルベーグ積分した値)として定められます。

例えば 11 頂点から伸びる 33 辺の長さがそれぞれ a,b,ca,b,c である直方体の体積は abcabc となるなど、この定式化は高校までで習う体積の公式と整合的です。

今回扱う部分集合 XX はルベーグ可測であることが知られているためその体積 VV は非負実数または \infty として定まり、それが正実数である(つまり 00 でも \infty でもない)時は結果的に V1V^{-1} が正整数となることが証明可能です。

 

なお積分などで現れる \infty は、R\mathbb{R} に属さないことが分かっている1つの項を適当に固定してそれを \infty と置くことで定式化されます。どんな項を \infty と置いても影響が出ないように議論をするため具体的にどう置くかを明言しないことが多いのですが、定式化の具体例が必要な場合は \infty を例えば R\mathbb{R} そのものであると定義してしまえば \inftyR\mathbb{R} に属さないこと、すなわち実数と区別できることが分かります。そして必要ならば R{}\mathbb{R} \cup \{\infty\} には R\mathbb{R} の順序や演算を拡張するようなものを適宜定めて使うことが多いです。

入力

33 以下の各正整数 i,ji,j に対し、AA(i,j)(i,j) 成分を Ai,jA_{i,j} と置きます。この時、入力は以下の形式で標準入力から与えられます:

NN BB
A1,1A_{1,1} A1,2A_{1,2} A1,3A_{1,3}
A2,1A_{2,1} A2,2A_{2,2} A2,3A_{2,3}
A3,1A_{3,1} A3,2A_{3,2} A3,3A_{3,3}
  • 11 行目に N,BN, B が半角空白区切りで与えられます。
  • 33 以下の各正整数 ii に対し、1+i1+i 行目に Ai,1,Ai,2,Ai,3A_{i,1}, A_{i,2}, A_{i,3} が半角空白区切りで与えられます。

制約

入力は以下の制約を満たします:

  • NN1N1061 \leq N \leq 10^6 を満たす整数
  • BB1B1061 \leq B \leq 10^6 を満たす整数
  • 33 以下の任意の正整数 i,ji,j に対し、Ai,jA_{i,j}0Ai,j1060 \leq A_{i,j} \leq 10^6 を満たす整数

出力

V1V^{-1}BB で割った余りを 11 行に出力してください。

ただし \infty を出力する時はinftyと出力してください。

最後に改行してください。

サンプル

サンプル1
入力
1 2
1 0 0
0 1 0
0 0 1
出力
1

AN=(100010001)1=(100010001)\displaystyle A^N = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)^1 = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)

であり、XX11 辺の長さが 11 の立方体となりその体積 VV11 です。11=11^{-1} = 1B=2B = 2 で割った余りは 11 です。

サンプル2
入力
1 2
1 1 1
1 2 1
1 1 2
出力
1

AN=(111121112)1=(111121112)\displaystyle A^N = \left( \begin{array}{ccc} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \end{array} \right)^1 = \left( \begin{array}{ccc} 1 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \end{array} \right)

であり、XX は平行六面体となりその体積 VV11 です。11=11^{-1} = 1B=2B = 2 で割った余りは 11 です。

サンプル3
入力
2 3
1 1 1
1 1 1
1 1 1
出力
0

AN=(111111111)2=(333333333)\displaystyle A^N = \left( \begin{array}{ccc} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{array} \right)^2 = \left( \begin{array}{ccc} 3 & 3 & 3 \\ 3 & 3 & 3 \\ 3 & 3 & 3 \end{array} \right)

であり、XX は平面を正の有限幅だけ平行移動させた軌跡として得られる立体となりその体積 VV\infty です。

1\infty^{-1}00 と定義したので、1\infty^{-1}BB で割った余りは 00 です。

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