計蒜客 難題題庫 200 判斷m是否為質數

2021-07-04 11:10:09 字數 826 閱讀 9952

給定乙個長度為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 2

1 2 3 4 5

輸出:

yes

2

#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,接下來的一行,輸...