设最终选择的区间为 [l,r]。将区间内元素乘上 k 后,整个数组的 gcd 为

记 H=gcd(a1,…,al−1,ar+1,…,an)、I=gcd(al,…,ar)、g=gcd(a1,…,an),显然有 gcd(H,I)=g。
将 H=g⋅h′、I=g⋅i′,且 gcd(h′,i′)=1。则
给你一个长度为 n 的整数序列 a1,a2,…,an 和一个正整数 k。你可以执行至多一次操作:选择一个区间 [l,r](1≤l≤r≤n),将该区间内的每个元素都乘以 k。操作可以不做,也可以做一次。你的目标是让操作后整个序列的最大公约数尽可能大。请你求出这个最大的可能值。
序列的长度 n 不超过 2×105,k 是不超过 109 的正整数。序列中的元素 ai 均为整数且满足 0≤ai≤109。测试数据组数 T 不超过 100,且所有测试数据的 n 之和不超过 3×105。
第一行包含一个整数 T,表示测试数据组数。接下来每组数据由两行组成:第一行包含两个整数 n 和 k,分别表示序列的长度和乘数;第二行包含 n 个整数 a1,a2,…,an,表示初始的整数序列。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册