問題一覧 > 教育的問題

No.2448 一次変換と面積

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 5
作問者 : 👑 p-adicp-adic / テスター : tko919tko919 tko919tko919
1 ProblemId : 9664 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-08-25 21:14:38

問題文

まずは記法の導入です。正整数 $N$ と整数係数 $2$ 次正方行列 $A$ に対し、$\mathbb{R}^2$ の部分集合

$\displaystyle \left\{ x \in \mathbb{R}^2 \middle| \exists y \in [0,1]^2, x = \sum_{i=1}^{N} A^i y \right\} $

を $X_{N,A}$ と置き、$X_{N,A}$ の面積を $S_{N,A}$ と置きます。$S_{N,A}$ は非負整数であることが証明可能です。

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

 

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

$X_A$ の定義

$\displaystyle \left\{ x \in \mathbb{R}^2 \middle| \exists y \in [0,1]^2, x = \sum_{i=1}^{N} A^i y \right\} $

は、ある $y \in [0,1]^2$ を用いて

$\displaystyle x = \sum_{i=1}^{N} A^i y $

と表せるような $\mathbb{R}^2$ の要素 $x$ 全体の集合を表します。

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

例えば $1$ 頂点から伸びる $2$ 辺の長さがそれぞれ $a,b$ である長方形の面積は $ab$ となるなど、この定式化は高校までで習う面積の公式と整合的です。

今回扱う部分集合 $X_{N,A}$ はルベーグ可測であることが知られているためその面積 $S_{N,A}$ は非負実数または $\infty$ として定まり、今回は特に非負整数となることが証明可能です。

 

ここで次のような問題を考えます:

入力に $2$ 個の正整数 $N, B$ と整数係数 $2$ 次正方行列 $A$ が与えられます。

$S_{N,A}$ を $B$ で割った余りを求めてください。

 

入力の最初に正整数 $T$ が与えられます。$T$ 個の問題に答えてください。

入力

この時、入力は以下の形式で標準入力から $1+3T$ 行で与えられます:

  • $1$ 行目に $T$ が与えられます。
  • $T$ 以下の各正整数 $t$ に対し、$3t - 1$ 行目から $3t + 1$ 行目までに $t$ 番目の問題に対する入力が与えられます。
$T$
($1$ 番目の問題に対する入力)
$\vdots$
($T$ 番目の問題に対する入力)

ここで $T$ 以下の各正整数 $t$ に対し、$t$ 番目の問題に対する入力を $N_t, B_t, A_t$ と表し、$2$ 以下の各正整数に対する $A_t$ の $(i,j)$ 成分を $A_{t,i,j}$ と表すと、$t$ 番目の問題に対する入力は以下の形式で標準入力から $3$ 行(入力全体の $3t - 1$ 行目から $3t + 1$ 行目まで)で与えられます:

  • $1$ 行目に $N_t, B_t$ が半角空白区切りで与えられます。
  • $2$ 行目に $A_{t,1,1}, A_{t,1,2}$ が半角空白区切りで与えられます。
  • $3$ 行目に $A_{t,2,1}, A_{t,2,2}$ が半角空白区切りで与えられます。
$N_t$ $B_t$
$A_{t,1,1}$ $A_{t,1,2}$
$A_{t,2,1}$ $A_{t,2,2}$

制約

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

  • $T$ は $1 \leq T \leq 10^3$ を満たす整数
  • $T$ 以下の各正整数 $t$ に対し、
    • $N_t$ は $1 \leq N_t \leq 10^{18}$ を満たす整数
    • $B_t$ は $1 \leq B_t \leq 10^9$ を満たす整数
    • $2$ 以下の各正整数 $i,j$ に対し $A_{t,i,j}$ は $-10^9 \leq A_{t,i,j} \leq 10^9$ を満たす整数

出力

$T$ 以下の各正整数 $t$ に対し、$t$ 行目に $S_{N_t,A_t}$ を $B_t$ で割った余りを出力してください。

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

サンプル

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

$\displaystyle \sum_{i=1}^{N_1} A_1^i = \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right)^1 = \left( \begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array} \right) $

であり、$X_{N_1,A_1}$ は $1$ 辺の長さが $1$ の正方形となりその面積 $S_{N_1,A_1}$ は $1$ です。$1$ を $B_1 = 1$ で割った余りは $0$ です。

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

$\displaystyle \sum_{i=1}^{N_1} A_1^i = \left( \begin{array}{cc} 1 & 1 \\ 1 & 1 \\ \end{array} \right)^1 = \left( \begin{array}{cc} 1 & 1 \\ 1 & 1 \\ \end{array} \right) $

であり、$X_{N_1,A_1}$ は原点 $(0,0)$ と点 $(2,2)$ を結ぶ線分となりその面積 $S_{N_1,A_1}$ は $0$ です。$0$ を $B = 2$ で割った余りは $0$ です。

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

まずは $1$ 個目の問題を考えます。

$\displaystyle \sum_{i=1}^{N_1} A_1^i = \left( \begin{array}{cc} 1 & 0 \\ 0 & 2 \end{array} \right)^1 + \left( \begin{array}{cc} 1 & 0 \\ 0 & 2 \end{array} \right)^2 = \left( \begin{array}{cc} 2 & 0 \\ 0 & 6 \end{array} \right) $

であり、$X_{N_1,A_1}$ は $2$ 辺の長さがそれぞれ $2,6$ の長方形となりその面積 $S_{N_1,A_1}$ は $12$ です。$12$ を $B = 3$ で割った余りは $0$ です。

 

次に $2$ 個目の問題を考えます。

$\displaystyle \sum_{i=1}^{N_2} A_2^i = \left( \begin{array}{cc} 1 & 0 \\ 0 & -3 \end{array} \right)^1 = \left( \begin{array}{cc} 1 & 0 \\ 0 & -3 \end{array} \right) $

であり、$X_{N_2,A_2}$ は $2$ 辺の長さがそれぞれ $1,3$ の長方形となりその面積 $S_{N_2,A_2}$ は $3$ です。$3$ を $B = 4$ で割った余りは $3$ です。

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