目录
题目描述
输入描述
输出描述
解析
完整代码
描述
给定一个长度为N(0< n< =10000)的序列,保证每一个序列中的数字a[i]是正整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0< k< =n)
输入描述
输入格式:第一行为2个数n,k(含义如上题)第二行为n个数,表示这个序列
输出描述
输出格式:如果m为质数则第一行为’YES’(没有引号)第二行为这个数m 否则 第一行为’NO’ 第二行为这个数m
用例输入 1
5 2 1 2 3 4 5
用例输出 1
YES 2
这题非常容易理解,代码也不难;
下面出示代码:
#include <bits/stdc++.h>
using namespace std;
bool zs(int n){
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)
return false;
return true;
}
int main() {
int n,k,a[10001];
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=n;i>=1;i--){
for(int j=1;j<=i-1;j++){
if(a[j]>a[j+1]) swap(a[j],a[j+1]);
}
}
int sum=0;
sum=a[n-k+1]-a[k];
if(zs(sum)) cout<<"YES"<<endl<<sum;
else cout<<"NO"<<endl<<sum;
return 0;
}