题目描述有很大的问题,要求查的是连续子序列,并非子序列 所以循环一次就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;

}