給定乙個長度為n(0< n< =10000)的序列,保證每乙個序列中的數字a[i]是小於maxlongint的非負整數 ,程式設計要求求出整個序列中第k大的數字減去第k小的數字的值m,並判斷m是否為質數。(0< k< =n)
輸入格式:
第一行為2個數n,k(含義如上題) 第二行為n個數,表示這個序列
輸出格式:
如果m為質數則 第一行為'yes'(沒有引號),第二行為這個數m
否則,第一行為'no',第二行為這個數m(需要注意的是,最小的質數是2,如果小於2的話,請直接輸出no)
對於第k大的詳細解釋:
如果乙個序列為1 2 2 2 3
那麼第1大為3,第2大為2,第3大為2,第4大為2,第5大為1, 第k小與上例相反
樣例1輸入:
5 21 2 3 4 5
輸出:
yes2
#include#include#includeusing namespace std;
bool isprime(int n)
if(n == 2)
for(int i = 2; i * i <= n; ++i)
}return 1;
}int main()
sort(vi.begin(), vi.end());
int m = vi[n - k] - vi[k - 1];
if(m < 2)
if(isprime(m))else
cout << m << endl;
return 0;
}
計蒜客 難題題庫 217 階乘
n的階乘定義為n 1 2 3 n 如3 6 n 通常最後會有很多0,如5 120 最後有乙個0,現在統計n 去除末尾的0後,最後k位是多少 輸入格式 第一行包括兩個數n,k 輸出格式 如果n 不止k位,則輸出最後k位,如果不足k位,則將剩下的全部輸出 7!為5040,去除末尾的0為504,最後兩位為...
計蒜客 難題題庫 005 矩陣翻轉
曉萌最近在做乙個翻轉的應用,你可能也知道,其實是由乙個個的點組成的。於是,曉萌想先做乙個可以翻轉矩陣的程式,來解決他問題的核心部分。輸入第一行包括由空格分開的整數m n t 0 m 200,0 n 200,t 0或1 其中m和n分別表示待處理矩陣的行數與列數,t為0時表示左右翻轉,為1時表示上下翻轉...
計蒜客 難題題庫 018 跳躍遊戲
給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到陣列的最後乙個下標。例如 a 2,3,1,1,4 return true.a 3,2,1,0,4 return false.格式 第一行輸入乙個正整數n,接下來的一行,輸...