/*==========================================
P1001 第K极值
内存限制 128MB 代码限制 64KB
描述 Description
给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是
小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去
第k小的数字的值m,并判断m是否为质数。(0<k<=n)
输入格式 InputFormat
输入格式:
第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列
输出格式 OutputFormat
输出格式:
如果m为质数则
第一行为'YES'(没有引号)
第二行为这个数m
否则
第一行为'NO'
第二行为这个数m
样例输入 SampleInput
5 2
1 2 3 4 5
样例输出 SampleOutput
YES
2 数据范围和注释 Hint
对于第K大的详细解释:
如果一个序列为1 2 2 2 2 3
第1大 为3
第2大 为2
第3大 为2
第4大 为2
第5大 为1
第K小与上例相反 另外需要注意的是
最小的质数是2,如果小于2的话,请直接输出NO
============================================*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int fun(long n);//判断n是否质数,是则返回1,否则返回0;
int cmp(const void *a,const void *b);
int main()
{
long n,k,*a,i,m;
scanf("%ld%ld",&n,&k);
a=(long *)malloc(n*sizeof(long));
for(i=;i<n;i++)
scanf("%ld",&a[i]);
qsort(a,n,sizeof(long),cmp);
m=a[n-k]-a[k-];
i=fun(m);
if(i==) printf("YES\n%ld\n",m);
else printf("NO\n%ld\n",m);
return ;
}
int fun(long n)//判断n是否质数,是则返回1,否则返回0;
{
long i,t;
if(n<) return ;
t=sqrt(n);
for(i=;i<=t;i++)
{
if(n%i==) return ;
}
return ;
}
int cmp(const void *a,const void *b)
{
return *(long *)a-*(long *)b;
}

这个题呢要用long类型数据。要注意第k大数减去第k小数有可能是负数。质数检测也要注意写正确。可以使用快排的就用快排。

好久没写OJ的题目了,再过来看看写写倍觉亲切啊

P1001 第K极值【tyvj】的更多相关文章

  1. tyvj——P1001 第K极值

    P1001 第K极值 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序 ...

  2. P1001 第K极值

    P1001 第K极值 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序 ...

  3. [TYVJ] P1001 第K极值

    第K极值   背景 Background 成成第一次模拟赛 第一道    描述 Description 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于 ...

  4. TYVJ P1001 第K极值 Label:水

    背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数 ...

  5. 学习笔记--函数式线段树(主席树)(动态维护第K极值(树状数组套主席树))

    函数式线段树..资瓷 区间第K极值查询 似乎不过似乎划分树的效率更优于它,但是如果主席树套树状数组后,可以处理动态的第K极值.即资瓷插入删除,划分树则不同- 那么原理也比较易懂: 建造一棵线段树(权值 ...

  6. [Tyvj1001]第K极值 (贪心?模拟)

    考前打tyvj的水题 题目描述 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去 ...

  7. 分治法:快速排序求第K极值

    标题其实就是nth_element函数的底层实现 nth_element(first, nth, last, compare) 求[first, last]这个区间中第n大小的元素 如果参数加入了co ...

  8. 【算法学习】有旋treap

    treap是平衡树的一种.与其他平衡树一样,它也能够支持插入和删除,求第k极值等,接下来我们主要探讨有旋treap的实现过程. treap中每个节点要维护其值,左右孩子以及子树大小.父亲要不要写则看你 ...

  9. django模型操作

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表        

随机推荐

  1. Android.mk 常用宏和变量

    android ndk开发有一个重要的文件 Android.mk,他虽然重要,但是对它进行深入介绍的文档却比较的少,这里将对Android.mk中常用的宏和变量进行说明: 由于这一部分的内容多,资料零 ...

  2. Interview----将一棵二叉树转换成其镜像

    题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点. 用递归和循环两种方法完成树的镜像转换. 例如输入:        8      /    ...

  3. fedora下vim配置

    一.安装 1)dnf安装 fedora22以下 sudo yum install vim fedora22及以上 sudo dnf install vim 如果遇到下面类似的错误 .gz from : ...

  4. 【LEETCODE OJ】Copy List with Random Pointer

    Problem link: http://oj.leetcode.com/problems/copy-list-with-random-pointer/ Deepcopy a linked list ...

  5. OC中在.h和.m中声明的属性和成员变量有何区别?

    相比Swift而言,OC规矩太多. 差不多,.h中声明的属性和成员变量均可以在子类中访问到.而.m则不可.而属性其实也就是成员变量的一种简写,其内部自动包含了getter和setter方法. 如图:V ...

  6. Java 集合深入理解(6):AbstractList

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情比天蓝,来学学 AbstractList 吧! 什么是 AbstractList AbstractList 继承自 ...

  7. 瓷砖铺放 (状压DP+矩阵快速幂)

    由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移. 这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态. 进行两遍bfs,分别为初始状态可以到达的状态 ...

  8. PHP CI分页类带多个参数

    通过修改system中的pagination.php,给每个<a>都增加了class="pagination". view页面 <div class=" ...

  9. Magento在IE下登陆不了后台,在Firefox下正常

    目前的解决办法如下: 方法一,用FF登陆后台,在 System—Configuration-Web-Session Cookie management....timeout 改为:86400 方法二: ...

  10. 【题解】【矩阵】【回溯】【Leetcode】Rotate Image

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...