1006 Magic Pen 6
字段和取模相同的 s[i] 和 s[j] 之间的长度 j - i 可以删除。
/****************************************************/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <stack>
#include <map>
#include <queue>
#include <algorithm>
#include <ctime>
#define EPS 1E-8
#define MAXN 100010
#define INF (~0U >> 2)
#define MOD 10007
#define Lson l, mid, rt << 1
#define Rson mid + 1, r, rt << 1 | 1
using namespace std;
typedef long long LL;
/****************************************************/
int s[MAXN], vis[MAXN];
int main()
{
int M,N;
while (scanf("%d%d", &N, &M) != EOF)
{
memset(vis, -1, sizeof(vis));
int sum = 0;
s[0] = 0;
for (int i = 1; i <= N; i++)
{
int tmp;
scanf("%d", &tmp);
s[i] = ((s[i - 1] + tmp) % M + M) % M;
}
int res = 0;
for (int i = 0; i <= N; i++)
{
if (vis[s[i]] == -1)
{
vis[s[i]] = i;
}
else
{
res = max(res, i - vis[s[i]]);
}
}
printf("%d\n", res);
}
}