题意:
n个数,把第i个数和第j个数之差的绝对值相乘, 1<= i<j <=n, 取模m。n在1e5的范围内,m在1000的范围内。
思路:
当n大于m的时候,肯定会有两个数与m同余,也就是说这两个数相减后%m肯定是0
当n小于等于m的时候,直接暴力。
#pragma warning(disable:4996)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<set>
#include<string>
#include<cmath>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
ll a[200005];
int main()
{
ll n, m, i, j, ans = 1;
scanf("%lld%lld", &n, &m);
for (i = 1; i <= n; i++)
scanf("%lld", &a[i]);
if (n > m)
{
printf("0\n");
}
else
{
for (i = 1; i <= n; i++) {
for (j = i + 1; j <= n; j++) {
ans = (ans * abs(a[i] - a[j])) % m;
}
}
printf("%lld\n", ans);
}
return 0;
}