题意:
给出 (n) 个数的数组 (a),和数 (m) ,求 (prod_{1leq i<j leq n}{|a_i-a_j|};mod;m);
分析:
从取模的角度思考。
- 当 (nleq m) 时,直接暴力算;
- 当 (n>m) 时,这 (n) 个数中必然至少有 (2) 个数取模 (m) 的余数相同,即他们的差值是 (m) 的倍数,所以最终结果为 (0);
完全没有想过这样写。
复杂度:(O(n^2))
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
int a[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
if(n>m)
printf("0
");
else
{
ll ans=1;
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
ans=ans*abs(a[i]-a[j])%m;
}
printf("%d
",ans);
}
return 0;
}