#433. 平方取模迷宫 广州市数学与科学联赛(信息学)D2T1
平方取模迷宫 广州市数学与科学联赛(信息学)D2T1
题目描述
平方取模迷宫
在一个 m 行 n 列的迷宫中,每个格子都有一个整数。你从起点(qx,qy) 出发,初始能量值为起点的格子值。每次你可以向上、下、左、右四个方向移动一格,但不能走出迷宫,也不能重复经过同一个格子。
每当你移动到一个新格子时,你的能量值会按照以下规则更新:
新能量值=(当前能量值+新格子的值)^2modq
你的目标是到达终点 (zx,zy),并且到达时能量值恰好等于 w。求最少需要移动多少步。
如果无法在 16 步以内(包含 16 步) 到达终点并满足条件,则输出 -1。
输入格式
第一行包含两个整数 m 和 n,表示迷宫的行数和列数。(1≤n≤m≤900) 第二行包含四个整数 qx,qy,zx,zy,分别表示起点的行、列和终点的行、列。坐标从 1 开始。
第三行包含两个整数 q 和 w,分别表示取模的模数和目标能量值。 接下来 m 行,每行 n 个整数,表示迷宫中每个格子的值。第 i 行第 j 列的值对应格子 (i,j)。
输出格式
输出一个整数,表示最少步数。如果无法在 16 步内到达终点并满足条件,输出 -1。
3 3
1 1 3 3
100 4
1 2 3
4 5 6
7 8 9
-1
3 3
1 1 3 3
1000 604
1 2 3
4 5 6
7 8 9
6
数据范围与约定
数据范围 1≤n≤m≤900
1≤qx,zx≤m,
1≤qy,zy≤n
1≤q≤10
0≤w<q
起点不参与能量计算,初始能量直接为起点的格子值。
每次移动后,能量值更新为 (当前能量 + 新格子值)^2 % q。
不能重复经过同一个格子。
如果 16 步内无法到达终点或到达时能量值不等于 w,输出 -1。