已知 nn
n 個整數 x1,x2,…,xnx_1,x_2,…,x_nx1
,x2
,…,
xn ,以及 11
1 個整數 kk
k ( k
k<
n )。從 nn
n 個整數中任選 kk
k 個整數相加,可分別得到一系列的和。例如當 n=4,k=3n=4,k=3n=
4,k=
3 , 44
4 個整數分別為 3,7,12,193,7,12,193,
7,12
,19 時,可得全部的組合與它們的和為:
3+7+12=223+7+12=223+
7+12
=22
3+7+19=293+7+19=293+
7+19
=29
7+12+19=387+12+19=387+
12+1
9=38
3+12+19=343+12+19=343+
12+1
9=34
。 現在,要求你計算出和為素數共有多少種。
例如上例,只有一種的和為素數: 3+7+19=293+7+19=293+
7+19
=29 。
輸入格式:
鍵盤輸入,格式為:
n,kn,kn,
k ( 1≤n≤20,k1≤
n≤20
,kx1,x2,…,xn(1≤xi≤5000000)x_1,x_2,…,x_n (1 \le x_i \le 5000000)x1
,x2
,…,
xn(
1≤xi
≤50
0000
0)輸出格式:
螢幕輸出,格式為: 11
1 個整數(滿足條件的種數)。
輸入樣例#1:複製
4 3 3 7 12 19輸出樣例#1:複製
1思路很簡單:dfs列舉出各種情況,再加上個判斷素數就好了。
下面貼上**
#include #include #include #include #include using namespace std;
typedef long long ll;
ll n,k,a[25],num;
int ch(ll x)
return 1;
}void dfs(ll a,ll b,ll c)
洛谷P1036 選數(DFS)
已知 nnn 個整數 x1,x2,xnx 1,x 2,x nx1 x2 xn 以及111個整數kkk k3 7 12 223 7 12 223 7 12 22 3 7 19 293 7 19 293 7 19 29 7 12 19 387 12 19 387 12 19 38 3 12 19 343...
洛谷1036選數總結
思路總結 本題還是典型的dfs題目,關鍵在於狀態空間的選取,我想了想,用void dfs int now,int sum 其中now表示從n個數中選取k個數,相當於放在k個位置,now即代表第幾個位置,sum表示求和,但是在for迴圈選數的時候,思路卡了殼,原因就是每次都是從1 n選取,會有數的重複...
洛谷P1036 選數
已知 n 個整數 x1,x2,xn,以及乙個整數 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。...