第K极值(Tyvj)
生活随笔
收集整理的這篇文章主要介紹了
第K极值(Tyvj)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫了道水題,坑哭我了;;;
描述
給定一個長度為N(0<n<=10000)的序列,保證每一個序列中的數(shù)字a[i]是小于maxlongint的非負(fù)整數(shù)?,編程要求求出整個序列中第k大的數(shù)字減去第k小的數(shù)字的值m,并判斷m是否為質(zhì)數(shù)。(0<k<=n)輸入格式
輸入格式:第一行為2個數(shù)n,k(含義如上題)
第二行為n個數(shù),表示這個序列
輸出格式
輸出格式:如果m為質(zhì)數(shù)則
第一行為'YES'(沒有引號)
第二行為這個數(shù)m
否則?
第一行為'NO'
第二行為這個數(shù)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小與上例相反
另外需要注意的是
最小的質(zhì)數(shù)是2,如果小于2的話,請直接輸出NO ? //沒看到這句話剛開始,,,,
原創(chuàng)……
AC:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main() {int n,k;int i,s,flag;int a[10002];while(cin>>n>>k){flag=1;for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);s=a[n-k]-a[k-1];if(s<2)printf("NO\n");else {for(i=2;i<s/2;i++)if(s%i==0){flag=0;break;}if(flag)cout<<"YES"<<endl;else printf("NO\n");}cout<<s<<endl;}return 0; }總結(jié)
以上是生活随笔為你收集整理的第K极值(Tyvj)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The Magic Tower
- 下一篇: P1005 采药(Tyvj)