問題一覧 > 通常問題

No.612 Move on grid

レベル : / 実行時間制限 : 1ケース 2.500秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 87
作問者 : りあん / テスター : tsutaj
2 ProblemId : 2004 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2017-12-01 18:50:27

いつもの

Python では想定解法で TLE したので、PyPy で提出することをお勧めします。

問題文

3 次元グリッド上を点 P が以下の規則に従って動きます。

  • 最初、時刻 0 において点 P は原点 (0, 0, 0) にある。
  • 時刻 t において点 P が格子点 (x, y, z) にあるとき、時刻 t+1 での点 P の位置は、隣接する格子点
    • (x+1, y, z)
    • (x, y+1, z)
    • (x, y, z+1)
    • (x1, y, z)
    • (x, y1, z)
    • (x, y, z1)
    のいずれかであり、また、これらの点に移動する確率は、それぞれ 16 である。

このとき、点 P の時刻 T における座標 (x, y, z) dax+by+cze  を満たす確率を p とおくと、6T×p は整数になります。

6T×p109+7 で割った余りを求めてください。

入力

T
a b c d e

1 行目に、問題文中に示された時刻 T が与えられます。

2 行目に、問題文中の条件を表すパラメータ a, b, c, d, e がこの順で半角スペース区切りで与えられます。

入力は全て整数で、以下の制約を満たします。

  • 1T500
  • |a|, |b|, |c|20
  • (a, b, c)(0, 0, 0)
  • 10000de10000

出力

6T×p109+7 で割った余りを出力してください。最後に改行してください。

サンプル

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

時刻 1 に 3 次元空間上の x=1 という平面上にいれば良いので、(1,0,0) に移動した場合に成立します。

確率は 16 なので、 6×16=1 が答えになります。

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

サンプル3
入力
6
1 -1 0 0 0
出力
9024

サンプル4
入力
120
12 -1 2 -1212 1212
出力
504758737

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