P7016 [CERC2013] Captain Obvious and the Rabbit-Man

题目描述

“是你,显而易见船长!”邪恶的兔子人喊道,“你来这里是为了阻止我的邪恶计划!” “是的,是我。”显而易见船长说道。 “但是……你怎么知道我会在向日葵街 625 号?!你破解了我的邪恶代码吗?” “我破解了。三天前,你抢劫了向日葵街 5 号的银行,第二天你炸毁了向日葵街 25 号,昨天你在 125 号制造了一场混乱。这些都是 5 的幂。而去年你用 13 的幂做了类似的事情。你似乎对斐波那契数有一种天赋,兔子人。” “这还没完!我会学习……算术!”兔子人被拖入拘留时尖叫道,“你永远不知道会发生什么……哎哟!别碰我的耳朵,你们这些笨蛋!” “也许吧,但现在你被捕了。”船长自豪地补充道。 不幸的是,兔子人现在确实学会了一些更高级的算术。为了理解它,让我们定义序列 $F_n$(与斐波那契序列不完全相似): $F_{1} = 1$, $F_{2} = 2$, $F_{n} = F_{n-1} + F_{n-2}$ 对于 $n \ge 3$。 兔子人将他所有以前的邪恶想法结合成一个总计划。在第 $i$ 天,他在编号为 $p(i)$ 的地方进行恶意行为,定义如下: $p(i) = a_{1}\cdot F_{1}^{i} + a_{2}\cdot F_{2}^{i} + \cdots + a_{k}\cdot F_{k}^{i}$。 数字 $k$ 和整数系数 $a_1 , \cdots , a_k$ 是固定的。显而易见船长知道 $k$,但不知道系数。给定 $p(1), p(2), \cdots, p(k)$,帮助他确定 $p(k + 1)$。为了避免过大的数字,所有计算都在一个固定的素数 $M$ 模下进行。你可以假设 $F_1, F_2, \cdots, F_n$ 在模 $M$ 下是两两不同的。你也可以假设给定的输入总是存在唯一解。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来的每个测试用例描述如下: 每个测试用例的第一行包含两个整数 $k$ 和 $M$,其中 $1 \le k \le 4000, 3 \le M \le 10^{9}$。第二行包含 $k$ 个以空格分隔的整数——$p(1), p(2), \cdots, p(k)$ 模 $M$ 的值。

输出格式

按照输入中出现的顺序打印测试用例的答案。对于每个测试用例,打印一行包含一个整数:$p(k + 1)$ 模 $M$ 的值。

说明/提示

时间限制:6 秒,内存限制:128 MB。 题面翻译由 ChatGPT-4o 提供。