单点时限: 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. 家乐的深度学习笔记「4」 - softmax回归

    目录 softmax回归 分类问题 softmax回归模型 softmax运算 矢量表达式 单样本分类的矢量计算表达式 小批量样本分类的矢量计算表达式 交叉熵损失函数 模型预测及评价 图像分类数据集( ...

  2. 使用Python创建自己的Instagram滤镜

    不知道你有没有使用过Instagram滤镜,它们非常方便,只需单击几个按钮,就可以变换我要发布的照片​​. 你是否想过自己可以创建一个?答案是可以的! 在本文中,我将向你展示如何使用代码和示例图像来创 ...

  3. 干货|Python基础入门 课程笔记(三)

    目录 列表 元组 字典 三元表达式 一.列表 前面学习的字符串可以用来存储一串信息,那么想一想,如果现在有很多人,总不能每个人都起一个变量名把?那岂不得疯~ 咱们可以使用列表. (1)列表得格式和输出 ...

  4. dijskra算法(求正权图中最短路)

    思想:每次找到离原点最近的顶点,以这个点为中心扩展松弛,更新其余点到原点的最短路径. 注意:if(e[u][v]>x)e[u][v]=x; book[ ]数组标记最短路程的顶点集合 #inclu ...

  5. C# 基础知识系列-7 Linq详解

    前言 在上一篇中简单介绍了Linq的入门级用法,这一篇尝试讲解一些更加深入的使用方法,与前一篇的结构不一样的地方是,这一篇我会先介绍Linq里的支持方法,然后以实际需求为引导,分别以方法链的形式和类S ...

  6. 使用Git pull文件时,出现"error: RPC failed; curl 18 transfer closed with outstanding read data remaining"

    error: RPC failed; curl transfer closed with outstanding read data remaining fatal: The remote end h ...

  7. iOS App的启动过程

    一.mach-O Executable 可执行文件 Dylib 动态库 Bundle 无法被连接的动态库,只能通过 dlopen() 加载 Image 指的是 Executable,Dylib 或者 ...

  8. HashCode()与equals()深入理解

    1.hashCode()和equals()方法都是Object类提供的方法, hashCode()返回该对象的哈希码值,该值通常是一个由该对象的内部地址转换而来的int型整数, Object的equa ...

  9. pycharm文件名颜色代表的含义

    在使用pycharm过程中,文件名有不一样的颜色. 绿色:已经加入版本控制暂未提交 红色:未加入版本控制 蓝色:加入版本控制,已提交,有改动 白色:加入版本控制,已提交,无改动 灰色:版本控制已忽略文 ...

  10. python--内建属性、集合、常见模块、调试

    一.常用内建属性 常用专有属性 说明 触发方式 __init__ 构造初始化函数 创建实例后,赋值时使用,在__new__后 __new__ 生成实例所需属性 创建实例时 __class__ 实例所在 ...