CF1305C Kuroni and Impossible Calculation 鸽巢原理
作者:互联网
题意:
给定n个整数和m,求\(\prod_{1\leq i<j\leq n}|a_i-a_j|mod(m)\)的值
范围&性质:\(2\leq n\leq 2\times 10^5,1\leq m\leq 10^3,0\leq a_i \leq 10^9\)
分析:
吐槽一句:又是一道思维题,啊啊啊啊我就是想不到
第一反应就是\(\omicron(n^2)\)的暴力枚举,由于n范围过大而放弃,同时注意到m的范围很小,mod(m)的余数不会超过m种,那么由鸽巢原理可得前m+1个数里面必定有至少两个数关于mod(m)同余,那么这两个数mod(m)的差值必定为0,即答案为0。对于剩下的n<m的情况直接\(\omicron(n^2)\)的枚举就可以了
代码:
#include<bits/stdc++.h>
using namespace std;
namespace zzc
{
long long n,m;
long long a[200005],ans=1;
long long labs(long long x)
{
return x<0?-x:x;
}
void work()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
if(n>m)
{
printf("0\n");
return ;
}
else
{
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
ans=(ans*labs(a[i]-a[j]))%m;
}
}
printf("%lld",ans);
}
}
}
int main()
{
zzc::work();
return 0;
}
标签:10,return,Calculation,CF1305C,namespace,long,leq,鸽巢,mod 来源: https://www.cnblogs.com/youth518/p/13649616.html