题意很简单,就是求那个累积的值,昨晚卷积了半天发现 m m m 只有 1000 1000 1000,就可以知道只要 n > 1000 n>1000 n>1000 必定输出 0 0 0 或者 n > m n>m n>m 也会输出 0 0 0.
a % m = = b % m a\%m==b\%m a%m==b%m 那么有 ∣ a − b ∣ % m = = 0 |a-b|\%m==0 ∣a−b∣%m==0,所以当 n > m n>m n>m会有两种情况:
const int N = 2e5 + 10;
int n, m;
int res, tmp, cnt;
int a[N];
int main()
{
sdd(n, m);
rep(i, 1, n)
sd(a[i]);
if (n >= 2000)
puts("0");
else
{
ll ans = 1;
rep(i, 1, n)
{
rep(j, i + 1, n)
{
ans = abs(a[i] - a[j]) % m * ans % m;
ans = ans % m;
}
}
pld(ans);
}
return 0;
}