本文主要是介绍题目 1268: 第K极值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个长度为N(0< n< =10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)
输入格式
第一行为2个数n,k(含义如上题) 第二行为n个数,表示这个序列
输出格式
如果m为质数则 第一行为'YES'(没有引号) 第二行为这个数m 否则 第一行为'NO' 第二行为这个数m
样例输入
5 2 1 2 3 4 5
样例输出
YES 2
#include<stdio.h>#include "math.h"
int n[10005];
void f1(int num){int i, j,temp;for (i = 1; i <= num-1; i++){for (j = 0; j <= num-1 - i; j++){if (n[j] < n[j + 1]){temp = n[j];n[j] = n[j + 1];n[j + 1] = temp;}}}}int f(int m){int i,j;
if(m==1) return 1;j=(int)sqrt(m);for(i=2;i<=j;i++){if(m%i==0){return 1;}}return 0;
}int main()
{int i,j,num,k;
scanf("%d %d",&num,&k);for(i=0;i<num;i++){ scanf("%d",&n[i]);}f1(num);//printf("%d",n[k-1]-n[num-k]);if(f(n[k-1]-n[num-k])||n[k-1]-n[num-k]<2)printf("NO\n%d",n[k-1]-n[num-k]);else
printf("YES\n%d",n[k-1]-n[num-k]);return 0;
}
这篇关于题目 1268: 第K极值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!