問題 C 遞迴入門 組合 判斷素數

2021-10-02 08:39:15 字數 1872 閱讀 5093

問題 c: 【遞迴入門】組合+判斷素數

時間限制: 1 sec 記憶體限制: 128 mb

提交: 2125 解決: 615

[提交][狀態][討論版][命題人:外部匯入]

題目描述

已知 n 個整數b1,b2,…,bn

以及乙個整數 k(k<n)。

從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。

例如當 n=4,k=3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為:

3+7+12=22  3+7+19=29  7+12+19=38  3+12+19=34。

現在,要求你計算出和為素數共有多少種。

例如上例,只有一種的和為素數:3+7+19=29。

輸入第一行兩個整數:n , k (1<=n<=20,k<n)

第二行n個整數:x1,x2,…,xn (1<=xi<=5000000)

輸出乙個整數(滿足條件的方案數)。

樣例輸入

4 33 7 12 19

樣例輸出

1

#include

#include

#include

using std::vector;

typedef

long

long ll;

const

int maxn =25;

int n,k;

int count =0;

ll a[maxn]

, res[maxn]

;bool hashtable[maxn]=;

bool

isprime

(ll x)

return

true;}

void

bfs(

int index,

int r)if(

isprime

(sum)

==true

)// printf("\n");

}return;}

for(

int i = index; i <= n;

++i)}}

intmain

(int argc,

char

const

*ar**)

bfs(1,

1);printf

("%d\n"

, count)

;return0;

}

#include

#include

#include

using std::vector;

typedef

long

long ll;

const

int maxn =25;

int n,k;

int count =0;

ll a[maxn]

;int sum =0;

bool

isprime

(ll x)

return

true;}

void

bfs(

int index,

int r)

return;}

for(

int i = index; i <= n;

++i)

}int

main

(int argc,

char

const

*ar**)

bfs(1,

1);printf

("%d\n"

, count)

;return0;

}

問題 C 遞迴入門 組合 判斷素數

題目描述 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為 3 7 12 22 3 7 19 29 7 12 19 38 3 12 19...

問題 C 遞迴入門 組合 判斷素數

題目描述 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為 3 7 12 22 3 7 19 29 7 12 19 38 3 12 19...

遞迴入門 組合 判斷素數

時間限制 1 sec 記憶體限制 128 mb 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為 3 7 12 22 3 7 19 29...