Tyvj 1001 第K极值

来源:互联网 发布:java核心技术有哪些 编辑:程序博客网 时间:2024/05/22 08:05

题目:

 第k极值

来源:

 Tyvj 1001

题目大意:

 N个数,求第K小第K大的差值是否是质数,是则输出’yes’否则输出’no’,然后输出这  个数

数据范围:

 0<n<=10000,a[i]<=maxlongint

样例:

 5 2

 1 2 3 4 5

YES
2

做题思路:

 Qsort果断解决,判断第k个-第n-k+1个是否是质数

知识点:

 排序,判断质数

var a:array[0..100010]of longint; i,n,m:longint;procedure qsort(l,r:longint);var i,j:longint; k,t:longint;begin i:=l;j:=r; k:=a[(l+r) shr 1]; repeat while a[i]<k do inc(i); while a[j]>k do dec(j);  ifi<=j then  begin   t:=a[i];a[i]:=a[j];a[j]:=t;   inc(i);dec(j);  end; until i>j; ifi<r then qsort(i,r); ifj>l then qsort(l,j);end;function pd(x:longint):string;var i:longint;begin ifx<2 then exit('NO'); fori:=2 to trunc(sqrt(x)) do  ifx mod i=0 then exit('NO'); exit('YES');end;begin readln(n,m); fori:=1 to n do read(a[i]); qsort(1,n); writeln(pd(a[n-m+1]-a[m])); writeln(a[n-m+1]-a[m]);end.

题目来源:http://www.tyvj.cn:8080/Problem_Show.asp?id=1001

原创粉丝点击