【Tyvj P1001】第K极值
2016-08-05 08:26
211 查看
P1001 第K极值
时间: 1000ms / 空间: 131072KiB / Java类名: Main
背景
成成第一次模拟赛 第一道
描述
给定一个长度为N(0 < n <= 10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0 < k <= n)
输入格式
输入格式:
第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列
输出格式
输出格式:
如果m为质数则
第一行为’YES’(没有引号)
第二行为这个数m
否则
第一行为’NO’
第二行为这个数m
测试样例1
输入
5 2
1 2 3 4 5
输出
YES
2
备注
对于第K大的详细解释:
如果一个序列为1 2 2 2 2 3
第1大 为3
第2大 为2
第3大 为2
第4大 为2
第5大 为1
第K小与上例相反
另外需要注意的是
最小的质数是2,如果小于2的话,请直接输出NO
。。
排个序减一下判一下
一句话的题解QAQ
需要注意的题目里都说了
1不是质数不是合数
2是唯一的偶质数
代码如下
时间: 1000ms / 空间: 131072KiB / Java类名: Main
背景
成成第一次模拟赛 第一道
描述
给定一个长度为N(0 < n <= 10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0 < k <= n)
输入格式
输入格式:
第一行为2个数n,k(含义如上题)
第二行为n个数,表示这个序列
输出格式
输出格式:
如果m为质数则
第一行为’YES’(没有引号)
第二行为这个数m
否则
第一行为’NO’
第二行为这个数m
测试样例1
输入
5 2
1 2 3 4 5
输出
YES
2
备注
对于第K大的详细解释:
如果一个序列为1 2 2 2 2 3
第1大 为3
第2大 为2
第3大 为2
第4大 为2
第5大 为1
第K小与上例相反
另外需要注意的是
最小的质数是2,如果小于2的话,请直接输出NO
。。
排个序减一下判一下
一句话的题解QAQ
需要注意的题目里都说了
1不是质数不是合数
2是唯一的偶质数
代码如下
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 200005; int n,m,k,t,num[MAXN]; int main(){ memset(num,0,sizeof(num)); scanf("%d %d",&n,&k); for(int i = 1;i <= n;i ++) scanf("%d",&num[i]); for(int i = 1;i <= n;i ++) for(int j = 1;j <= n - i;j ++) if(num[j] < num[j + 1]) swap(num[j],num[j + 1]); m = num[k] - num[n - k + 1]; if(m == 2) printf("YES\n%d\n",m); else if(m > 2) for(int i = 2;i <= m / 2 + 1;i ++){ if(m % i == 0) {printf("NO\n%d\n",m);return 0;} if(i == m / 2 + 1) printf("YES\n%d\n",m); } else printf("NO\n%d\n",m); return 0; }
相关文章推荐
- P1001 第K极值【tyvj】
- 【Tyvj】P1001 第K极值【某下午刷水题系列】
- [TYVJ] P1001 第K极值
- tyvj P1001 第k极值
- |Tyvj|P1001 第K极值
- Tyvj_P1001 第K极值
- Tyvj 1001 第K极值
- tyvj 1001 第K极值
- p1001 --- 第K极值
- 第K极值(Tyvj)
- 【Tyvj】第k极值
- TYVJ 1001 第K极值
- p1001 --- 第K极值
- tyvj P1001:第K极值
- [BZOJ3196][TYVJ3196][树套数][区间第k大]二逼平衡树
- Tyvj_P1001
- tyvj p1001- 第K极值
- tyvj p1001- 第K极值[模拟]
- 第K极值
- tyvj P1001 第K极值