題目描述 description
給定乙個長度為n(0輸入描述 input description
第一行為2個數n,k(含義如上題)
第二行為n個數,表示這個序列
輸出描述 output description
如果m為質數則
第一行為'yes'(沒有引號)
第二行為這個數m
否則 第一行為'no'
第二行為這個數m
樣例輸入 sample input
5 21 2 3 4 5
樣例輸出 sample output
yes2
資料範圍及提示 data size & hint
20%資料滿足0這題考察的還是排序和質數判斷,唯一要注意的是此題需要排序的數目比較多,用一般的排序方法可能會超時,所以用的快速排序,還有一點宣告陣列時要用long long int型別
#include #define m 10000
//宣告函式
void sort(long long int *num,int begin,int end);
void swap(long long int *a,long long int *b);
int judge(long long int num);
int main(void)
; long long int n=0,k=0;
long long int i=0,tmp=0;
scanf("%lld %lld",&n,&k);
for(i=0;isort(num,0,n-1);
tmp = num[n-k]-num[k-1];
if(judge(tmp)) puts("yes");
else puts("no");
printf("%lld\n",tmp);
return 0;
}void swap(long long int *a,long long int *b)
//判斷num是否為質數,注意遍歷的i也應該為long long int型
int judge(long long int num)
if(i*i==num) return 0;
return 1;
}//快速排序
void sort(long long int *num,int begin,int end)
else i++;
} if(num[begin]<=num[i])
swap(num+begin,num+i);
sort(num,begin,i);
sort(num,j,end);
}}
快速選擇第k個數
給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列從小到大排序後的第k個數。輸入格式 第一行包含兩個整數 n 和 k。第二行包含 n 個整數 所有整數均在1 109範圍內 表示整數數列。輸出格式 輸出乙個整數,表示數列的第k小數。資料範圍 1 n 100000,1 k n 輸入樣...
快速冪 序列的第k個數
時間限制 1 sec 記憶體限制 128 mb 提交 24 解決 5 提交 狀態 討論版 命題人 quanxing 給你乙個序列的前3項,要麼等差數列要麼等比序列,你能求出第k項的值嗎。如果過大對200907取模 輸入t 組測試資料 每組測試資料有abc k 輸出第k項 2 1 2 3 5 1 2 ...
快速冪 序列的第k個數
bsny 在學等差數列和等比數列,當已知前三項時,就可以知道是等差數列還是等比數列。現在給你序列的前三項,這個序列要麼是等差序列,要麼是等比序列,你能求出第 k 項的值嗎。如果第 k 項的值太大,對 200907 取模。第一行乙個整數 t,表示有 t 組測試資料 對於每組測試資料,輸入前三項 a,b...