cf2234a.欧几里得序列与两个数

传统题 时间 1000 ms 内存 128 MiB 尝试 0 已通过 0 标签

欧几里得序列与两个数

欧几里得序列与两个数

题目描述

对于两个正整数 xyx \geq y,定义其长度为 kkk2k \geq 2)的欧几里得算法序列为如下正整数序列:

a1,a2,,aka_1, a_2, \ldots, a_k

其中 a1=xa_1 = xa2=ya_2 = y,且对任意 1ik21 \leq i \leq k - 2,满足

ai+2=aimodai+1a_{i + 2} = a_i \bmod a_{i + 1}

这里 umodvu \bmod v 表示 uu 除以 vv 的非负余数。注意序列中每一项都必须是正整数。

例如,x=13,y=8,k=4x = 13, y = 8, k = 4 时,对应的欧几里得算法序列为 a=[13,8,5,3]a = [13, 8, 5, 3]a3=13mod8=5a_3 = 13 \bmod 8 = 5a4=8mod5=3a_4 = 8 \bmod 5 = 3)。

现在给定一个序列 b1,b2,,bnb_1, b_2, \ldots, b_n。请你判断:是否能将 bb 的元素重新排列,使得它成为某一组正整数 xyx \geq y 的欧几里得算法序列?若能,输出对应的 x,yx, yxyx \geq y);若不能,输出 1-1。若有多个合法的 x,yx, y,输出任意一组即可。

输入格式

每个测试点包含多组测试数据。第一行一个正整数 tt1t5001 \leq t \leq 500),表示测试数据组数。

每组数据两行:

  • 第一行一个正整数 nn2n1002 \leq n \leq 100),表示序列长度。
  • 第二行 nn 个正整数 b1,b2,,bnb_1, b_2, \ldots, b_n1bi1091 \leq b_i \leq 10^9),表示序列 bb

输出格式

对于每组数据,若存在合法的 x,yx, y,输出一行两个正整数 x,yx, yxyx \geq y),用一个空格分隔;否则输出一行一个整数 1-1

样例输入 #1

6
2
1 1
2
1 2
4
1 2 3 4
3
6 4 2
4
3 8 13 5
3
1 1 1

样例输出 #1

1 1
2 1
-1
6 4
13 8
-1

样例解释

  • 第 1 组数据:取 x=1,y=1x = 1, y = 1,长度 k=2k = 2 的序列为 [1,1][1, 1],与 bb 相等,合法。
  • 第 3 组数据:可以证明不存在任何合法的 x,yx, y,输出 1-1
  • 第 4 组数据:取 x=6,y=4,k=3x = 6, y = 4, k = 3,序列为 [6,4,2][6, 4, 2]a3=6mod4=2a_3 = 6 \bmod 4 = 2),与 bb 相等,合法。
  • 第 6 组数据:b=[1,1,1]b = [1, 1, 1]。若 k3k \geq 3,则需要 a1>a2a_1 > a_2 才能保证 a3=a1moda21a_3 = a_1 \bmod a_2 \geq 1,但 bb 中最大的两个数相等,无法满足,输出 1-1

数据范围

变量 范围
tt 1t5001 \leq t \leq 500
nn 2n1002 \leq n \leq 100
bib_i 1bi1091 \leq b_i \leq 10^9

保证每组数据中 n\sum n 不会过大。

知识点与难度

本题涉及的知识点从属于 GESP 五级(数论:模运算 / 欧几里得算法 / 序列性质分析、排序),难度等级:普及/提高-。核心难点在于观察到序列的前两项必然是整个序列中最大的两个数,且后续各项由取模递推唯一确定、严格递减、可在模为 00 之前任意截断。

在线编程 IDE

建议全屏模式获得最佳体验