Code[VS] 1979 第k个数
来源:互联网 发布:公司域名备案需要多久 编辑:程序博客网 时间:2024/06/11 20:25
【题意】
给定一个长度为N(0<n<=10000)的序列,
保证每一个序列中的数字a[i]是小于maxlongint的非负整数 。
编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)
【分析】
由于是静态的,先排序然后就可以知道大小了。
设从小到大排完序后的数列为P‘,则第k大的为mx=P'[n-k+1],第k小的为mn=P'[k]
所以差为t=mx-mn
①当t<=1时,直接判定非素数
②当t>1时,用根号n的试除法判定就行了
注意①的坑点
给定一个长度为N(0<n<=10000)的序列,
保证每一个序列中的数字a[i]是小于maxlongint的非负整数 。
编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)
【分析】
由于是静态的,先排序然后就可以知道大小了。
设从小到大排完序后的数列为P‘,则第k大的为mx=P'[n-k+1],第k小的为mn=P'[k]
所以差为t=mx-mn
①当t<=1时,直接判定非素数
②当t>1时,用根号n的试除法判定就行了
注意①的坑点
【实现】
#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <algorithm>using namespace std;int n,k,p[10001];int t;int can(int i){if (i<=1) return 0;for (int k=2;k<=(int)sqrt(i);k++) if (i%k==0) return 0;return 1;}int main(void){scanf("%d%d",&n,&k);for (int i=1;i<=n;i++) scanf("%d",&p[i]);sort(p+1,p+n+1);if (can(t=p[n-k+1]-p[k])) printf("YES\n"); else printf("NO\n");printf("%d\n",t);return 0;}
0 0
- Code[VS] 1979 第k个数
- Code[VS] 1979 第K个数
- 1979 第K个数 (真头疼)
- 寻找第K个数
- 第k个数
- 第k个数
- 第k个数
- 第k个数
- 第k个数
- 找倒数第K个数
- 链表中倒数第k个数
- CODE[VS] 1040 统计单词个数
- 求第k个数,最小的K个数
- Code[VS] 1984 K好数
- 求n个数的第K小数
- ACM第K个数 C++实现
- 寻找最大的第K个数
- N个数,求第K大数
- ACM--steps--3.3.5--Robberies(01背包)
- hdu 1301 Jungle Roads 一个很水的题 AC率也可以知道了 但是题目很难理解啊 英语渣o(╯□╰)oKruskal算法
- 可伸缩多线程任务队列
- 《人是为了别人而活着》——爱因斯坦
- 简单方便的大众型视频编辑器“编辑星”正式免费开放
- Code[VS] 1979 第k个数
- acm2013
- 估计Visual Studio 2013 Update 5 正式版本离我们也不远了
- 伟大创意检验10要 - 如何检验你的创意是否适合支撑你创业
- jQuery.extend()的实现方式[转载]
- java集合框架总结(下)
- [Java]Openjdk 源码结构说明(一)
- 随笔20150223
- 【机器学习】机器学习中的数据清洗与特征处理