HDU 6128 Inverse of sum(同余)
http://acm.hdu.edu.cn/showproblem.php?pid=6128
题意:
有一个a数列,并且每个数都小于p,现在要求有多少对$(i,j)$满足$\frac{1}{a_i+a_j} \equiv \frac{1}{a_i}+\frac{1}{a_j} \mod p$,0没有逆元。
思路:
根据同余的性质对式子进行化简,在一个同余式两边同时做加法、减法或乘法仍保持同余。
先可以化简为 $1 \equiv 1+\frac{a_j}{a_i}+1+\frac{a_i}{a_j} \mod p \qquad $
然后 $a_i^2+a_j^2+a_ia_j \equiv 0 \mod p \qquad $
最后两边乘以$a_i-a_j$,得到$a_i^3-a_j^3 \equiv 0 \mod p \qquad$
需要特别注意的就是$a_i=a_j$的情况,因为此时乘以$a_i-a_j$就相当乘以了0,那么两边肯定就是相等,所以相等的时候就要用第二个式子来判断,这里计算三次方会爆long long,需要用快速乘法。
#include <iostream>
#include <cstdio>
#include <map> using namespace std;
typedef long long ll;
const int maxn=1e5+; int n;
ll p;
ll ans;
ll a[maxn]; map<ll,int> num;
map<ll,int> cnt; ll fast_mul(ll x, ll k)
{
ll ans=;
while(k)
{
if(k&) ans=(ans+x)%p;
x=(x+x)%p;
k>>=;
}
return ans;
} int main()
{
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%I64d",&n,&p);
num.clear();
cnt.clear();
ans=;
for(int i=;i<=n;i++)
{
scanf("%I64d",&a[i]);
if(a[i]==) continue;
if(fast_mul(fast_mul(a[i],a[i]),)) ans-=cnt[a[i]]++;
ll tmp = fast_mul(fast_mul(a[i],a[i]),a[i]);
ans+=num[tmp]++; //和前面的num[tmp]个数都可以组合
}
printf("%I64d\n",ans);
}
return ;
}
HDU 6128 Inverse of sum(同余)的更多相关文章
- 2017ACM暑期多校联合训练 - Team 7 1009 HDU 6128 Inverse of sum (数学计算)
题目链接 Problem Description There are n nonnegative integers a1-n which are less than p. HazelFan wants ...
- 2017多校第7场 HDU 6128 Inverse of sum 推公式或者二次剩余
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6128 题意:给你n个数,问你有多少对i,j,满足i<j,并且1/(ai+aj)=1/ai+1/a ...
- 数学--数论--HDU 6128 Inverse of sum (公式推导论)
Description 给nn个小于pp的非负整数a1,-,na1,-,n,问有多少对(i,j)(1≤i<j≤n)(i,j)(1≤i<j≤n)模pp在意义下满足1ai+aj≡1ai+1aj ...
- hdu 1166 线段树(sum+单点修改)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3
/* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意: 给出排列 a[N],求所有区间的 ...
- HDU 1024:Max Sum Plus Plus(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Problem Description Now I think you ...
- HDU 6071 Lazy Running (同余最短路 dij)
Lazy Running Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)To ...
- hdu-5776 sum(同余)
题目链接: sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Pro ...
- hdu 1047 (big integer sum, fgets or scanf, make you func return useful infos) 分类: hdoj 2015-06-18 08:21 39人阅读 评论(0) 收藏
errors made, boundary conditions, <= vs < , decreasing vs increasing , ++, –, '0'/'1' vs 0/1 p ...
随机推荐
- Java-mybatis-一次执行多条SQL语句
mysql数据库 1.修改数据库连接参数加上allowMultiQueries=true,如: hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx: ...
- 安装HDF5及在VS下配置HDF5
最近要用到HDF5来存储数据,想要安装尝试用一下.发现网上有两种安装方式,一种是obtain518.html:获取最新的HDF5-1.8软件;另一种是cmakebuild518.html:使用CMAK ...
- nodejs+express的(前端跨域请求)
1.后端代码 var dp = 456; var back = 'callback(\{\dp\ : \ ' + dp + '\ }\)'; res.send(back); 2.前端代码 <sc ...
- Floyd 判圈算法
Floyd 判圈算法 摘自维基百科, LeetCode 上 141题 Linked List Cycle 用到这个, 觉得很有意思. 记录一下. 链接: https://zh.wikipedia.or ...
- <转>ORACLE EBS中查看某个Request的Output File
由于某些权限的限制,有时候哪怕System Administrator职责也只能看到某个Request信息,但是不能查看它的Output File(在“Requests Summary”窗口中“Vie ...
- font-awesome图标
- Linux root用户下强制静音的问题
解决方法 pulseaudio --start --log-target=syslog suorce /etc/profile
- JSON自动生成相关类
开源项目地址:https://jsonclassgenerator.codeplex.com/SourceControl/latest 太好用了,这个
- (mac)阿里云ECS服务器配置过程
-----首先本人是半只脚入门的iOS开发者,弄这个只是单纯想多学点东西. -----阿里云服务器的配置选择:既然是学习用的,最最基础的配置就行了.1M带宽,1核1G...这就不详述了.没啥可选的,( ...
- 20145310《网络对抗技术》Exp6 信息搜集技术
实验内容 本次实验的目标是掌握信息搜集的最基础技能.具体有 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 ( ...