【题解】绝对值的故事

题意

给你一个长度为的数组,求数组中元素两两之差的绝对值之积。但是乘积可能会很对,所以对进行取模后输出。

题解

先看数据范围,由于较大,但是模数较小。根据鸽巢原理\抽屉原理,当大时,必存在两个元素对取模后相等,也因为。所以可以认为当大于时,答案肯定为。那么对于小于的部分我们只用去模拟运算一遍即可。

复杂度

时间复杂度

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N];
int main()
{
    int n,m;
    long long ans = 1;
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n; i++)
        scanf("%d",&a[i]);
    if(n > m)
    {
        printf("0\n");
        return 0;
    }
    for(int i = 1; i <= n-1; i++)
    {
        for(int j = i+1; j <= n; j++)
        {
            ans=ans*abs(a[i]-a[j])%m;
        }
    }
    printf("%lld\n",ans);
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务