洛谷P1036選數(素數 組合數)

2022-08-18 11:06:09 字數 877 閱讀 7825

主要考兩個知識點:判斷乙個數是否為素數、從n個數中選出m個數的組合

判斷乙個數是否為素數:

素數一定是6n+1或者6n-1

如果是6n,則可以被6整除

如果是6n+2,可以被2整除

如果是6n+3,可以被3整除

如果是6n+4,可以被2整除

而6n+5等同於6n-1

組合數:

參考部落格:

採用遞迴,從n個數里選出下標最大的乙個數,從n-1個數里再選出下標最大的乙個數,直到剩餘n-m+1個數,再選出最後乙個

如此反覆,直到最大的下標為m

**如下:

#include#include

#define maxn 500

using

namespace

std;

intm;

intcnt;

bool isprime(int

num)

if(num % 6 != 1 && num % 6 != 5

)

int x = (int

)sqrt(num);

for(int i = 5; i <= x; i += 6

) }

return

true;}

void combine(int a, int n, int m, int

b)

else

if(isprime(sum))}}

}int

main()

combine(a, n, m, b);

printf(

"%d\n

", cnt);

return0;

}

洛谷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。...

洛谷 P1036選數

已知 n 個整數 x1,x2,xn以及1個整數k k3 7 12 22 3 7 19 29 7 12 19 38 3 12 19 34 現在,要求你計算出和為素數共有多少種。例如上例,只有一種的和為素數 3 7 19 29。輸入格式 鍵盤輸入,格式為 n,k 1 n 20,kx1,x2,xn 1 x...

洛谷P1036選數

題目描述 已知 n 個整數 x1,x2,xn,以及1個整數k k3 7 12 22 3 7 19 29 7 12 19 38 3 12 19 34 現在,要求你計算出和為素數共有多少種。例如上例,只有一種的和為素數 3 7 19 29 輸入樣例 4 33 7 12 19 輸出樣例 1 include...