#include<bits/stdc++.h>
//为了找到最长数组不能被x整除,所以一个一个删去前面的,或一个一个删去后面的。
//只要 a[最面] % x!=0或者a[前面] % x!=0就截止删除。
//在整除中只要满足删去的那个不被整除则剩下的就不会被整除,因为删去之前就一直能被整除。
using namespace std;
int main(){
int t; cin >> t;
while(t--)
{
int n, x; cin >> n >> x;
int a[n];
int sum = 0;
for(int i = 0; i < n; ++i)
{
cin >> a[i];
sum += a[i];
}
if(sum % x)
{
cout << n << "\n";
continue;
}
int first = -1;
for(int i = 0; i < n; ++i)
{
if(a[i] % x)
{
first = i;
break;
}
}
if(first == -1)
{
cout << "-1\n";
continue;
}
int last = -1;
for(int i = n - 1; i >= 0; --i)
{
if(a[i] % x)
{
last = i;
break;
}
}
cout << max(last, n - first - 1) << "\n";
}
return 0;
}
cf. XXXXX
最新推荐文章于 2020-06-14 12:16:27 发布