【Tyvj】第k极值
来源:互联网 发布:java虚拟机原理pdf 编辑:程序博客网 时间:2024/05/01 11:19
描述 Description 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n) 输入格式 Input Format 输入格式:
第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列 输出格式 Output Format 输出格式:
如果m为质数则
第一行为'YES'(没有引号)
第二行为这个数m
否则
第一行为'NO'
第二行为这个数m
Sample Input
5 2
1 2 3 4 5
Sample Output
YES
2
时间限制 Time Limitation 各个测试点1s
数据范围
20%数据满足0<n<=10
50%数据满足0<n<=5000
100%数据满足0<n<=10000
a[i]<=maxlongint 注释 Hint 对于第K大的详细解释:
如果一个序列为1 2 2 2 2 3
第1大 为3
第2大 为2
第3大 为2
第4大 为2
第5大 为1
第K小与上例相反
另外需要注意的是
最小的质数是2,如果小于2的话,请直接输出NO最需要注意的是,最小的质数是2,如果小于2的话,直接输出NO
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstdlib>using namespace std;int n,k,s[10000];int judge(int x){ if (x<2) return 2; if (x==2) return 5; for (int i=2;i<=sqrt(x);++i) { if (x%i==0) { return 2; } } return 5;} int main(){ freopen("第K极值.in","r",stdin); freopen("第K极值.out","w",stdout); scanf("%d %d\n",&n,&k); for (int i=1;i<=n;++i) { scanf("%d",&s[i]); } sort(s+1,s+n+1); int ans=s[n-k+1]-s[k]; if (judge(ans)==5) {cout<<"YES"<<endl;} else cout<<"NO"<<endl; printf("%d",ans); return 0;}
- 【Tyvj】第k极值
- tyvj P1001:第K极值
- Tyvj 1001 第K极值
- tyvj 1001 第K极值
- tyvj p1001- 第K极值
- tyvj P1001 第k极值
- TYVJ 1001 第K极值
- 第K极值(Tyvj)
- 【Tyvj P1001】第K极值
- |Tyvj|P1001 第K极值
- tyvj p1001- 第K极值[模拟]
- 【Tyvj】P1001 第K极值【某下午刷水题系列】
- 第k极值
- p1001 --- 第K极值
- Tyvj_P1001 第K极值
- 第K极值
- P1001 第K极值
- P1001第K极值
- flex4.5 国际化问题
- sql 循环插入数据
- select(),fd_set,FD_SET,FD_CLR,FD_ZERO,FD_ISSET的用法
- winCE6.0摄像头驱动buffer分析
- 一个加法的类模板源代码
- 【Tyvj】第k极值
- Powerdesigner数据库建模工具教程
- LDD3驱动学习笔记1---Hello World
- 工厂模式三姐妹
- Words and Their Stories: Some of Our Listeners' Favorite Sayings
- 程序员学英语三部曲
- VS制作安装程序
- 4------2
- 我与JAVA