题意:
给出 \(n\) 个数的数组 \(a\),和数 \(m\) ,求 \(\prod_{1\leq i<j \leq n}{|a_i-a_j|}\;mod\;m\);
分析:
从取模的角度思考。
- 当 \(n\leq 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\n");
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\n",ans);
}
return 0;
}