CF1484B Restore Modulo

题目描述

在比赛中获得第一名后,Alex 赢得了许多整数数组,并被告知这些数组非常昂贵。颁奖典礼结束后,Alex 决定将它们出售。在数组当铺有一条规定:只有当数组可以被压缩为一个生成器时,才能出售。 这个生成器需要四个非负整数 $n$、$m$、$c$、$s$。其中 $n$ 和 $m$ 必须为正整数,$s$ 为非负整数,$c$ 需要满足 $0 \leq c < m$。长度为 $n$ 的数组 $a$ 按如下规则生成: - $a_1 = s \bmod m$,其中 $x \bmod y$ 表示 $x$ 除以 $y$ 的余数; - 对于所有 $1 < i \leq n$,有 $a_i = (a_{i-1} + c) \bmod m$。 例如,如果 $n = 5$,$m = 7$,$c = 4$,$s = 10$,则 $a = [3, 0, 4, 1, 5]$。 这样的数组的价格就是生成器中的 $m$ 的值。 Alex 有一个问题:对于每个数组,他最多能卖多少钱。请你帮他判断每个数组是否存在四个数 $n$、$m$、$c$、$s$ 能生成该数组。如果存在,请最大化 $m$。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 10^5$),表示数组的数量。 每个数组的描述包括两行: 第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示该数组的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 10^9$),表示数组的元素。 保证所有数组长度之和不超过 $10^5$。

输出格式

对于每个数组,输出一行: - 如果不存在这样的四个数能生成该数组,输出 $-1$; - 如果 $m$ 可以任意大,输出 $0$; - 否则,输出最大值 $m$ 和任意一个合适的 $c$($0 \leq c < m$)。

说明/提示

由 ChatGPT 4.1 翻译