A.
Problema de XXXXX : dada una matriz a, longitud n y un número entero b. Encuentre el subintervalo más largo cuya suma no sea múltiplo de b.
Si: todos los números son múltiplos de b, entonces la suma de los subintervalos de a es un múltiplo de b.
Si: la suma de a no es múltiplo de b, entonces la respuesta es la longitud de toda la matriz.
Si: la suma de a es múltiplo de b, entonces encuentre el subíndice x del primer número que no sea múltiplo de b de izquierda a derecha, y encuentre el subíndice y del primer número que no sea múltiplo de b de derecha a izquierda, entonces Tome max (n - len ([1, x]), len ([1, y))) max (n-len ([1, x]), len ([1, y)))m a x ( n-l e n ( [ 1 ,x ] ) ,l e n ( [ 1 ,y)))
Explique que la suma del tercero a es un múltiplo de b, y reste un número que no sea un múltiplo de b, y el resto no sea un múltiplo de b.
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1e5+10;
int a[N];
int main() {
ll t, n, x, sum, flag;
scanf("%lld", &t);
while(t--) {
sum = 0, flag = 0;
scanf("%lld%lld", &n, &x);
for(int i=1; i<=n; i++) {
scanf("%lld", &a[i]);
sum += a[i];
if(a[i] % x) flag = 1;
}
if(sum % x) printf("%lld\n", n);//总和不是b的倍数。
else {
if(!flag) printf("-1\n");//全是b的倍数
else {
ll i = 1, j = n;
while(a[j] % x == 0) j--;//从右往左找
while(a[i] % x == 0) i++;//从左往右找
printf("%lld\n", max(j-1, n-i));
}
}
}
return 0;
}