Responsive image

问题 3184 --GCD(min)

3184: GCD(min)

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 37
[提交][状态][讨论版][命题人:]

题目描述

出题人不喜欢数学,所以他决定把这个问题抛给你。
对于一个数组的连续的区间(l,r),如果min(al,al+1,...,ar)=gcd(al,al+1,...,ar),则称这个区间为好区间。

他将给你一个数组,该数组为一个排列,你需要求出数组中最长的好区间的长度。

min(al,al+1,...,ar)表示区间(l,r)中的最小元素,gcd(al,al+1,...,ar)表示区间(l,r)中所有元素的最大公因数。
一个长为n的排列是指一个包含n个元素的数组,其中从1到n每个整数都恰好出现一次。

特别的,规定区间的长度为1的min(ai)等于ai本身,区间的长度为1的gcd(ai)等于ai本身。

输入描述

第一行包含一个整数T(1≤T≤1e4),代表样例数量。
接下来为T组样例。每组样例的第一行为一个整数n(1≤n≤5⋅1e5),表述数组的长度。
每组样例的第二行包含n个整数a1,a2,...,an(1≤ai≤1e9),表示他给你的数组。
保证所有样例的n的和不超过5*1e5

输出描述

对于每个样例,输出一个整数ans表示最长的好区间的长度。

样例输入

1
2
2 1

样例输出

2

来源

[提交][状态]
ACM算法攻关部