NOIP 2002提高組 選數 dfs 暴力

2022-04-01 04:17:21 字數 1455 閱讀 1440

2023年noip全國聯賽普及組

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題目描述 description

已知 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。

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

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

輸入描述

input description

鍵盤輸入,格式為:

n , k (1<=n<=20,k<n)

x1,x2,…,xn (1<=xi<=5000000)

輸出描述

output description

螢幕輸出,格式為:

乙個整數(滿足條件的種數)。

樣例輸入

sample input

4 33 7 12 19

樣例輸出

sample output

資料範圍及提示 data size & hint

(1<=n<=20,k<n)

(1<=xi<=5000000)

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef

long

long

ll;using

namespace

std;

//freopen("d.in","r",stdin);

//freopen("d.out","w",stdout);

#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)

const

int maxn=22

;int

a[maxn];

intans,n,k;

bool isprim(int

num)

//樸素的判定素數的方法

void dfs(int cur,int cnt,int num)//

cut表示選了幾個數,cnr表示從第幾個數開始,num表示答案是什麼

for(int i=cur;i<=n;i++)

dfs(i+1,cnt+1,num+a[i]);}//

dfs暴力篩選

intmain()

NOIP2002 普及組 選數

題目描述 已知 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 1...

選數 NOIP2002 學習總結

問題描述 已知 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 1...

NOIP2002 提高組 複賽 均分紙牌

noip2002 提高組 複賽 均分紙牌 1.看完題,第一想法就是,算出均分後的紙牌張數,與每個位置紙牌數作差,統計負的數個數,與正的數個數,取其中最大個數,即為最少移動次數,當然此種做法估計無法ac,但猜測能拿50分左右,沒有其他想法的時候,就按這個辦法試試吧。2.提交,5組資料,通過2組,得分4...