To become the king of Codeforces, Kuroni has to solve the following problem.

He is given n numbers a1,a2,…,an. Help Kuroni to calculate ∏1≤i<j≤n|ai−aj|. As result can be very big, output it modulo m.

If you are not familiar with short notation, ∏1≤i<j≤n|ai−aj| is equal to |a1−a2|⋅|a1−a3|⋅ … ⋅|a1−an|⋅|a2−a3|⋅|a2−a4|⋅ … ⋅|a2−an|⋅ … ⋅|an−1−an|. In other words, this is the product of |ai−aj| for all 1≤i<j≤n.

Input
The first line contains two integers n, m (2≤n≤2⋅105, 1≤m≤1000) — number of numbers and modulo.

The second line contains n integers a1,a2,…,an (0≤ai≤109).

Output
Output the single number — ∏1≤i<j≤n|ai−aj|modm.

Examples
Input
2 10
8 5
Output
3
Input
3 12
1 4 5
Output
0
Input
3 7
1 4 9
Output
1
Note
In the first sample, |8−5|=3≡3mod10.

In the second sample, |1−4|⋅|1−5|⋅|4−5|=3⋅4⋅1=12≡0mod12.

In the third sample, |1−4|⋅|1−9|⋅|4−9|=3⋅8⋅5=120≡1mod7.
思路:鸽巢原理真的很神奇,有的时候很麻烦的一件事突然就很明朗了。
如果n>m,那么一定有两个数字取余m相等,那么他们相减之后就肯定为0,最终结果也为0.这样就只暴力考虑1000之内的情况就可以了。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=2e5+100;
int a[maxx];
int n,m;int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) cin>>a[i];//for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;if(n>m) cout<<0<<endl;else{ll ans=1ll;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++) ans=(ans*(ll)abs(a[i]-a[j]))%m;}cout<<ans%m<<endl;//for(m=1;m<=1000;m++) cout<<ans%m<<endl;}return 0;
}

努力加油a啊,(o)/~

Kuroni and Impossible Calculation CodeForces - 1305C(鸽巢原理)相关推荐

  1. CodeForces - 1305C Kuroni and Impossible Calculation(鸽巢原理)

    题目链接:点击查看 题目大意:给出 n 个数,输出两两绝对值之差相乘对 m 取模后的答案 题目分析:读完题后乍一看感觉 n 很大,不能 n * n 暴力解决,但是发现 m 非常小,因为有了 m 的限制 ...

  2. CodeForces - 1305 C. Kuroni and Impossible Calculat(鸽巢原理)

    传送门 题意: 给一个长度为n的数组 求数组中所有两两差的绝对值的乘积,然后%m 思路: 看一下那个要求的东西,很容易发现是鸽巢原理的整除问题 因为m很小,而且最后要模m 鸽巢原理整除问题:任意n+1 ...

  3. CodeForces - 1501C Going Home(鸽巢原理+暴力)

    题目链接:点击查看 题目大意:给出 nnn 个数,问是否存在四个数满足:a+b=c+da+b=c+da+b=c+d 题目分析:官方题解是直接 O(n2)O(n^2)O(n2) 暴力,因为每个数的范围是 ...

  4. c语言鸽巢原理,Codeforces 1188C DP 鸽巢原理

    题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...

  5. 兰州大学第一届『飞马杯』程序设计竞赛 - ★★平形四边行★★(鸽巢原理+暴力)

    题目链接:点击查看 题目大意:二维平面坐标系上给出 nnn 个点,现在需要求出四个点,满足四个点可以组成可退化的平行四边形 题目分析:因为坐标的范围很小,所以瞬间想到了上周刷到的一道题目的模型: Co ...

  6. 鸽巢原理(抽屉原理)的详解

    抽屉原理 百科名片 桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果.这一现象就是我们所说的"抽屉原理". 抽屉原理的一般含义为: ...

  7. 【组合数学】鸽巢原理 ( 鸽巢原理简单形式示例 4、5 )

    文章目录 一.鸽巢原理简单形式示例 4 二.鸽巢原理简单形式示例 5 一.鸽巢原理简单形式示例 4 假设有 333 个 777 位二进制数 , A:a1a2a3a4a5a6a7A : a_1a_2a_ ...

  8. 【组合数学】鸽巢原理 ( 鸽巢原理简单形式 | 鸽巢原理简单形式示例 1、2、3 )

    文章目录 一.鸽巢原理简单形式 二.鸽巢原理简单形式示例 1 三.鸽巢原理简单形式示例 2 四.鸽巢原理简单形式示例 3 一.鸽巢原理简单形式 鸽巢原理 : 将 n+1n + 1n+1 个物体 放到 ...

  9. 算法之组合数学及其算法篇(二) ----- 鸽巢原理

    鸽巢原理 前言 鸽巢原理 运用1 运用二 运用三 鸽巢原理的推广 推论 运用一 运用二 鸽巢原理在几何上的作用 鸽巢原理对于数学的证明 前言 鸽巢原理又称抽屉原理或鞋盒原理,这个原理最早是由狄利克雷( ...

最新文章

  1. Oracle的ORA-02292报错:违反完整性约束,已找到子记录
  2. php数据库访问辅助类,php+MySQL实战案例【二】php数据库辅助类
  3. Python3学习笔记:使用代理访问url地址
  4. 微软 CTO 韦青:“程序员 35 岁就被淘汰”是个伪概念 | 人物志
  5. beanutils工具类_Apache Commons 工具类介绍及简单使用
  6. java链式结构_(Java)单链表Java语言链式结构实现(数据结构四)
  7. linux的 vi编辑器在哪,Linux Vi编辑器的使用
  8. 运放输入偏置电流方向_连载 | 运放参数的详细解释和分析part2如何测量输入偏置电流Ib和输入失调电流Ios...
  9. 【转】在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1
  10. vuejs 传参 向 子组件 父组件_Vue 2.6发布:新语法、性能改进、向3.0看齐
  11. 可视化编程语言是什么意思
  12. 元宇宙,是忽悠还是未来
  13. STM32定时器周期任务函数编写
  14. 坦克大战小游戏——新手练习用的
  15. 事件的三个阶段:捕获阶段 目标阶段 冒泡阶段及防止冒泡和捕获
  16. 常用的Web前端开发框架有哪些呢?分享这11个
  17. DirectX11 纹理采样
  18. 利用labelme生成Mask
  19. uniapp 拉起微信客服功能
  20. 基于Python的车牌识别系统的实现

热门文章

  1. python拼接字符串的方法_python—字符串拼接三种方法
  2. 3、AD使用技巧分享
  3. 信息收集——Office钓鱼
  4. 文件查找工具everything的下载使用
  5. 安全方向比路由交换难吗_「网工进阶」路由交换:链路聚合的配置,你都会吗...
  6. android studio 虚拟机adb.exe已停止工作的处理
  7. python 发送邮件connect none_Python发送邮件功能示例【使用QQ邮箱】
  8. python通过api获取数据_在一次点击PythonRequests中从API获取所有数据
  9. 风格迁移应用_图像也能做情感迁移?罗切斯特大学团队提出计算机视觉新任务...
  10. Android开发之引用framework.jar中的方法 | 引用framework.jar包