周期点
给定函数 f:[0,m]→[0,m]。对于每个整数 k,其中 0≤k<m,函数 f 在区间 [k,k+1] 上是线性的,且 f(0),f(1),…,f(m) 均为整数。具体地,当 x∈[k,k+1] 时,有
f(x)=(k+1−x)f(k)+(x−k)f(k+1).
定义 f1(x)=f(x),对于 n>1,定义
fn(x)=f(fn−1(x)).
给定 f(0),f(1),…,f(m),求方程
fn(x)=x
在 x∈[0,m] 上的解的个数。若解的个数有限,则答案对给定的模数取模。
本题包含多组测试数据。
输入格式
对于每组测试数据:
第一行输入一个整数 m。
第二行输入 m+1 个整数,其中第 i 个整数表示 f(i−1)。
第三行输入两个整数 n 和 modnum,表示迭代次数以及答案需要取模的模数。
相邻两组测试数据之间可能有一个空行。
当单独输入 m=0 时,表示输入结束。
输出格式
对于每组测试数据,输出一行一个整数,表示方程解的个数对 modnum 取模后的结果。
如果方程有无穷多个解,则输出 Infinity。
样例输入
2
2 0 2
2 10
3
0 1 3 2
1 137
3
2 3 0 3
20 10000
样例输出
4
Infinity
9074
数据范围
- 1≤m≤80;
- 1≤n≤5×103;
- 1≤modnum≤104;
- 对于所有 0≤i≤m,均有 0≤f(i)≤m;
- 单独输入的 m=0 表示输入结束,不属于任何一组测试数据。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
2
2 0 2
2 10
3
0 1 3 2
1 137
3
2 3 0 3
20 10000
输出
4
Infinity
9074