单点时限: 2.0 sec

内存限制: 512 MB

对于数组a,如果i≠j并且ai+aj是一个质数,那么我们就称(i,j)为质数对,计算数组中质数对的个数。

输入格式

第一行输入一个n,表示数组的长度,接下来n个整数,第i个数代表ai。
(1≤n≤100000,0≤ai≤100)

输出格式

输出数组中质数对的个数。

样例

input
3
1 2 3
output
4

提示

样例说明:a1+a2,a2+a1,a2+a3,a3+a2都为质数,总共有四对。

 题目中n的个数有很多1e5左右,但是a的值最大才200,所以有很多重复的,首先我们要记录一下某一个数出现的次数,然后两个for循环遍历每一个数
//思路:
//先打个素数表, 然后 在记录每个数出现的次数,然后在用两个for遍历a[i]+a[j]的每一种情况
//如果不是素数就跳过
//当i和j相等的时候说明他们指的同一个数,假设这个数出现了n次,那么会有n*(n-1)中组合
//如果二者不同的话会有n*n种选择
#include<iostream>
#include<map>
#include<set>
using namespace std;
const int N=1e5 + ;
map<int ,int>mp;
set<int>se;
set<int >::iterator it;
int arr[N];
int a[N];
int prime[]={,,};
int pow(){
for(int i=;i*i<=;i++)
if(prime[i]==){
for(int j=i+i;j<=;j+=i)
prime[j]=;
}
}
int main(){
pow();
int n;
cin>>n;
int x;
for(int i=;i<n;i++){
cin>>x;
mp[x]++;//key为值,value为该数出现的次数
se.insert(x);
} int pos=; for(it=se.begin();it!=se.end();it++){
a[pos++]=*it;
}
int sum=;
for(int i=;i<pos;i++){
for(int j=;j<pos;j++){
if(!prime[a[i]+a[j]]){
if(i==j){
sum+=mp[a[i]]*(mp[a[i]]-);
}
else sum+=mp[a[i]]*mp[a[j]];
}
}
}
cout<<sum<<endl;
return ;
}

F. Count Prime Pairs的更多相关文章

  1. HDOJ 4750 Count The Pairs

    按边长从小到大排序...再逐个加入(就像MST一样)最先联通的点之间最长路径中的最小值就是新加入的边的长.... Count The Pairs Time Limit: 20000/10000 MS ...

  2. HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)

    Count The Pairs Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others ...

  3. F - Count the Colors

    F - Count the Colors ZOJ - 1610   思路:调了一个小时,但是发现自己线段树木有写错,颜色统计出了错误.但是不明白自己颜色统计为什么错了. 求大佬指点迷津.思路很简单,就 ...

  4. hdu 5901 count prime & code vs 3223 素数密度

    hdu5901题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5901 code vs 3223题目链接:http://codevs.cn/problem ...

  5. Leetcode Count Prime

    Description: Count the number of prime numbers less than a non-negative number, n Hint: The number n ...

  6. hdu 4750 Count The Pairs(并查集+二分)

    Problem Description With the 60th anniversary celebration of Nanjing University of Science and Techn ...

  7. Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)

    题目链接:http://codeforces.com/contest/1036/problem/F 题意: 题解:求在[2,n]中,x != a ^ b(b >= 2 即为gcd)的个数,那么实 ...

  8. HDU-4750 Count The Pairs 最小生成树,并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:Q个询问t,求在一个无向图上有多少对点(i,j)满足 i 到 j 的所有路径上的最长边的最 ...

  9. [2013 ACM/ICPC Asia Regional Nanjing Online C][hdu 4750]Count The Pairs(kruskal + 二分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意: 定义f(u,v)为u到v每条路径上的最大边的最小值..现在有一些询问..问f(u,v)>=t ...

随机推荐

  1. Leetcode——回溯法常考算法整理

    Leetcode--回溯法常考算法整理 Preface Leetcode--回溯法常考算法整理 Definition Why & When to Use Backtrakcing How to ...

  2. STM32CubeMx——串口收发

    生成代码 1.配置串口1 2.选择模式 3.开中断 4.其他的RCC.调试都一样,弄完直接生成代码. 串口发送 1.定义一个用来测试的数组并初始化 /* USER CODE BEGIN 0 */ ui ...

  3. React源码解析——ReactAPI

    一.API背景 api的具体转化关系 可以通过到https://babeljs.io/repl/网站去将我们创建的Jsx进行实时的转译 const React = { Children: { map, ...

  4. Python第十一章-常用的核心模块04-datetime模块

    python 自称 "Batteries included"(自带电池, 自备干粮?), 就是因为他提供了很多内置的模块, 使用这些模块无需安装和配置即可使用. 本章主要介绍 py ...

  5. redis++:Redis持久化 rdb & aof 工作原理及流程图 (三)

    RDB的原理: 在Redis中RDB持久化的触发分为两种:自己手动触发与Redis定时触发. 针对RDB方式的持久化,手动触发可以使用: 1):save:会阻塞当前Redis服务器,直到持久化完成,线 ...

  6. Make编译Ardupilot源码的两种方法

    编译环境准备 ​ Ardupilot源码下载和PX4 toolchain工具链下载 ​ (见https://www.cnblogs.com/BlogsOfLei/p/7707485.html) ​ 注 ...

  7. [codevs1227]草地排水<Dinic网络流最大流>

    题目链接:http://codevs.cn/problem/1993/ https://www.luogu.org/problemnew/show/P2740 之前一直都没去管网络流这算法,但是老师最 ...

  8. 添加属于自己的python模块空间

    在我们学习python的过程中会遇到很多时候,我们需要自己曾经写过的模块,它可能是一个函数或者其他的东西,,,, 下面是我的解决过程,如果你像将自己建立的文件夹当作你存放自己写的模块的地方,你需要将你 ...

  9. JS 剑指Offer(五) 二叉树的重建

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 题目分析:已知二叉树的前序和中序遍历,根据前序遍历和中序遍历的规则,前序遍历的第一 ...

  10. 汇编学习-三(VB)

    闲来无事做了一下160个crackme,因为是VB程序,所以将得到的一点心得记录如下(OD加载注释) push eax ; Andréna.004018A8 call dword ptr ds:[&l ...