#P15764. [JAG 2025 Summer Camp #1] LOGCFL
[JAG 2025 Summer Camp #1] LOGCFL
说明
给定一个大小为 的三维整数数组 。
初始化以下变量:
integer x = 0;
integer w = 1;
stack s = {};
然后,对于每个 ,选择一个满足 的整数 ,并执行以下操作:
如果 ,则执行以下操作:
w *= A[t][x][y];
s.push(x);
x = y;
上述中的 表示 。
如果 ,则执行以下操作:
assert (!s.empty());
w *= A[t][x][s.top()];
x = (x + s.top()) % N;
s.pop();
如果在执行操作前栈为空,则不能选择 。
注意,栈支持以下操作:
- push(x):向集合中添加一个元素 。
- pop():移除最近添加的元素。
- top():返回最近添加的元素的值。
对于每个 ,考虑所有可能的序列 ,使得最终的 值为 。计算所有此类序列对应的 值之和,并将结果对 取模后输出。
输入格式
输入格式如下:
$$\begin{aligned} & N \\ & A_{0,0,0} \cdots A_{0,0,N-1} \\ & \vdots \\ & A_{0,N-1,0} \cdots A_{0,N-1,N-1} \\ & \vdots \\ & \vdots \\ & A_{N-1,0,0} \cdots A_{N-1,0,N-1} \\ & \vdots \\ & A_{N-1,N-1,0} \cdots A_{N-1,N-1,N-1} \end{aligned}$$表示 的值。
- $0 \leq A_{i,j,k} \leq 10^9 \ (1 \leq i, j, k \leq N)$
- 所有输入值均为整数。
输出格式
输出 行。在第 行(),输出 对应的答案。
2
1 10
100 1000
1 3
9 27
92
363
3
2 1 2
1 2 1
1 1 1
2 1 1
2 2 1
2 2 2
2 1 1
1 2 1
1 2 2
63
68
56
4
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
120
120
120
120
京公网安备 11011102002149号