CF2085E.Serval and Modulo
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个由 n 个非负整数组成的数组 a 和一个魔法数 k(k≥1 且为整数)。Serval 构造了另一个长度为 n 的数组 b,其中对于所有 1≤i≤n,满足 bi=aimodk∗。随后,他将 b 打乱了顺序。
现在给定数组 a 和 b,请找出一个可能的魔法数 k。如果 Serval 欺骗了你且这样的整数不存在,则输出 −1。
可以证明,在题目约束下,若这样的 k 存在,则存在一个不超过 109 的有效答案。你需要在输出中保证 k≤109。
∗符号 aimodk 表示 ai 除以 k 的余数。
输入格式
每个测试包含多个测试用例。第一行输入测试用例数 t(1≤t≤104)。接下来描述每个测试用例。
每个测试用例的第一行包含一个整数 n(1≤n≤104)——数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤106)——数组 a 的元素。
第三行包含 n 个整数 b1,b2,…,bn(0≤bi≤106)——数组 b 的元素。
保证所有测试用例的 n 之和不超过 104。
输出格式
对于每个测试用例,输出一个整数 k(1≤k≤109)——找到的魔法数。若不存在这样的整数,输出 −1。
若存在多个答案,输出任意一个即可。
输入输出样例
输入#1
5 4 3 5 2 7 0 1 1 1 5 3 1 5 2 4 1 2 3 4 5 6 2 3 4 7 8 9 1 2 3 6 7 8 5 21 22 25 28 20 0 1 2 1 0 6 1 1 2 3 5 8 0 0 1 1 0 0
输出#1
2 31415926 -1 4 -1
说明/提示
第一个测试案例中,若 k≥3,则 2=a3modk 必须出现在数组 b 中,但这会导致矛盾。当 k=1 时,[a1modk,a2modk,a3modk,a4modk]=[0,0,0,0],无法通过打乱顺序得到 b。当 k=2 时,[a1modk,a2modk,a3modk,a4modk]=[1,1,0,1],可以打乱为 b。因此唯一可能的答案是 k=2。
第二个测试案例中,注意 b 可以通过打乱 a 直接得到。因此所有 6 到 109 的整数都是合法答案。
第三个测试案例中,可以证明这样的 k 不存在。Serval 欺骗了你!
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?