题目描述有很大的问题,要求查的是连续子序列,并非子序列 所以循环一次就OK了
#include <stdio.h>
int main(void) {
long long n, k, len, p,i;
scanf("%lld %lld",&n, &k);
long long a[100010];
for (long long i = 1; i <= n; i++) {
scanf("%lld",&a[i]);
a[i] = a[i-1] + a[i];
}
len = n;
while (len) {
for (i = n - len + 1; i >= 1; i--) {
p = a[i + len - 1] - a[i - 1];
if (p % k == 0) {
printf("%lld",len);
return 0;
}
}
len--;
}
return 0;
}