問題一覧 > 通常問題

No.1999 Lattice Teleportation

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 29
作問者 : MasKoaTS / テスター : 👑 potato167 cologne
2 ProblemId : 7721 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-11-28 20:24:55

お詫び(2022/07/01 22:50頃)

サンプル1の説明文1行目に誤りがありました。
「魔法3使用後」となっている箇所は、正しくは「魔法2使用後」です。当該箇所を訂正しました。

皆様にご迷惑をおかけし、大変申し訳ありません。

問題文

魔法使いのコアさんは、二次元平面上で 1,2,,N1, 2, \dots, N の番号が付いた NN 個の転移魔法を使用できます。

コアさんが座標 (x,y)(x, y) の点にいるときに転移魔法 ii (1iN)(1 \leq i \leq N) を使用すると、
座標 (x,y)(x, y), (x+Ai,y+Bi)( x + A_{i}, y + B_{i} )22 点を結ぶ線分(端点を含む)上の好きな点に転移できます。

ただし、(Ai,Bi)=(0,0)(A_{i}, B_{i} ) = (0, 0) の場合、コアさんの位置は座標 (x,y)(x, y) のまま変化しません。

コアさんは最初座標 (0,0)(0, 0) の点に立っており、これから先の転移魔法 1,2,,N1, 2, \dots, N をこの順にすべて 11 回ずつ使用します。

このとき、コアさんが転移魔法 NN を使用した後に到達し得る格子点の座標は何種類ありますか?
答えは非常に大きくなる可能性があるので、109+710^{9} + 7 で割った余りを出力してください。

なお、「格子点」とは、二次元平面上で xx 座標と yy 座標がともに整数である点を指します。

制約

  • 1N1051 \leq N \leq 10^{5}

  • 109Ai,Bi109-10^{9} \leq A_{i}, B_{i} \leq 10^{9} (1iN)(1 \leq i \leq N)

  • 入力はすべて整数

入力

入力は次の形式で与えられます。

NN
A1A_{1} B1B_{1}
A2A_{2} B2B_{2}
   \vdots
ANA_{N} BNB_{N}
  • 11 行目には NN が与えられる

  • (1+i)(1 + i) (1iN)(1 \leq i \leq N) 行目には AiA_{i}BiB_{i} がこの順に半角スペース区切りで与えられる

出力

答えを 11 行に出力し、最後に改行してください。

サンプル

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

コアさんが魔法 22 使用後に到達し得る格子点の座標は

(0,0)(0, 0), (1,0)(1, 0), (2,0)(2, 0), (1,1)(1, 1), (2,1)(2, 1), (1,2)(1, 2), (2,2)(2, 2), (3,2)(3, 2)

88 種類です。

例えば座標 (2,1)(2, 1) の点に到達したい場合、

  1. 魔法 11 を使って座標 (32,0)\displaystyle \left( \frac{ 3 }{ 2 }, 0 \right) の点に移動

  2. 魔法 22 を使って座標 (2,1)( 2, 1 ) の点に移動

とすれば良いです。

サンプル2
入力
1
6 -8
出力
3

条件を満たす点の座標は

(0,0)(0, 0), (3,4)(3, -4), (6,8)(6, -8)

33 種類です。

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

条件を満たす点の座標は (0,0)(0, 0) のみです。

サンプル4
入力
10
521309021 308664469
-582348421 970764886
-963023827 -504503609
-819305054 316985726
48397449 237116403
-268699958 546643299
656066464 740195508
365802487 -484426411
-684041610 -988265057
-247873784 142659349
出力
520304203

答えを 109+710^{9} + 7 で割った余りを求めてください。

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