前言

这道题目是道好题。

第一次div-2进前100,我太弱了。

题解

公式推导

我们观察这个式子。

\[(a_i+a_j)(a_i^2+a_j^2)\equiv k \mod p
\]

感觉少了点什么,我们想到两边同时乘一个\((a_i-a_j)\)。

于是它变成了:

\[(a_i^2-a_j^2)(a_i^2+a_j^2) \equiv k(a_i-a_j) \mod p
\]

也就是:

\[a_i^4-a_j^4 \equiv k(a_i-a_j) \mod p
\]

把\(k\)乘进去变成:

\[a_i^4-a_j^4 \equiv ka_i-ka_j \mod p
\]

变换一下就是

\[a_i^4-ka_i \equiv a_j^4-ka_j \mod p
\]

公式到这里就推完了

代码实现

实现很简单,根据上面的的公式,由于k是确定的,我们对于所有的\(a_i\)把\((a_i^4-ka_i)\)取模之后放入一个STL map中,然后我们就可以计算有多少数跟它相同了。

复杂度

鉴于STL map的复杂度,时间复杂度为\(\Theta(nlog_2n)\)。

代码

#include <cstdio>
#include <map> using namespace std; long long read(){
long long x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
} map<long long, long long> mp; int main() {
long long n = read(), p = read(), k = read();
long long res = 0;
for (int i = 1; i <= n; ++i){
long long x = read();
long long tmp = ((((((x * x) % p * x) % p * x) % p - k * x) % p) % p + p) % p ;
if (mp.count(tmp) == true)
res += mp[tmp];
++mp[tmp];
}
printf("%I64d\n", res);
return 0;
}

最新文章

  1. Codevs 1230 STL万岁。。 。
  2. C++ Socket UDP &quot;Hello World!&quot;
  3. exc_bad_access(code=1, address=0x789870)野指针错误
  4. html object元素
  5. Jmeter 后置处理器JSON Extractor 提取json的多个值
  6. js 实现数据结构 -- 队列
  7. Ecplise 快捷键笔记
  8. PV、UV、UIP、VV、CPC、CPM、RPM、CTR解释
  9. c++中为什么可以通过指针或引用实现多态,而不可以通过对象呢?
  10. Java并发编程_volatile关键字的用法(二)
  11. 写了一个RenderInBackground的脚本
  12. Linux下软件包安装
  13. Journal entry of the thirteenth chapter to chapter seventeenth(第十三章和十七章阅读与疑问)
  14. 数据库-mysql管理
  15. kNN(K-Nearest Neighbor)最邻近规则分类
  16. HTML5使用总结(一)
  17. eclipse在线安装mybatis generator插件
  18. JAVA交通规则
  19. Windows环境下使用kafka单机模式
  20. java网络通信:HTTP协议 之 Sessions与Cookies

热门文章

  1. bzoj3929 Discrete Logging 大步小步算法
  2. 20191110 Spring Boot官方文档学习(3)
  3. Ubuntu 16.04简单配置备忘录
  4. [DS+Algo] 006 两种简单排序及其代码实现
  5. html中设置height=100%无效的问题
  6. ES6 系列之异步处理实战
  7. P3198 [HNOI2008]遥远的行星
  8. Python webdriver调用Chrome报错
  9. 深入理解React组件传值(组合和继承)
  10. Django之modles 多对多创建第三张表