Noip2016提高組 組合數問題problem

2022-07-18 04:48:15 字數 885 閱讀 8973

day2 t1

題目大意

告訴你組合數公式

,其中n!=1*2*3*4*5*...*n;意思是從n個物體取出m個物體的方案數

現給定n、m、k,問在所有i(1<=i<=n),所有j(1<=j<=min(i,m))的(i,j)滿足cji是k的倍數的個數。

輸入樣例:

2 5  (兩個數,第乙個數t表示該資料有t組詢問,第二個為k,接下來t行分別為n,m)

4 5

6 7

輸出樣例:

0

7

資料範圍:1<=n,m<=2000,1<=t<=10000,1<=k<=21

數論題,當時做竟然沒發現這就是個楊輝三角,就是少了第一列全是1的,真是悲劇。

組合數的遞推式就是cmn=cm-1n-1+cm

n-1因為k一開始就固定了,所以預處理2000以內的個數,用字首和優化優化就可以ac了,當然用二維字首和似乎能優化到o(1),不麻煩每行乙個字首和到時候o(n)的得出答案也不會超時。

比完賽了也趕快轉c++了23333

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int a[2005][2005],ji[2005][2005];7

intn,m,ans,t,k;

8int

main()

19for (int i=1;i<=t;i++)

26return

0;

27 }

神奇的**

解題報告 Noip2016提高組 組合數問題

day2 t1 題目大意 告訴你組合數公式,其中n!1 2 3 4 5 n 意思是從n個物體取出m個物體的方案數 現給定n m k,問在所有i 1 i n 所有j 1 j min i,m 的 i,j 滿足cji是k的倍數的個數。輸入樣例 2 5 兩個數,第乙個數t表示該資料有t組詢問,第二個為k,接...

NOIP2016 組合數問題

題目描述 第一行有兩個整數t,k,其中t代表該測試點總共有多少組測試資料,k的意義見 問題描述 接下來t行每行兩個整數n,m,其中n,m的意義見 問題描述 t行,每行乙個整數代表答案。輸入樣例 1 1 23 3 輸入樣例 2 2 54 5 6 7 輸出樣例 1 1輸出樣例 2 07 樣例1說明 在所...

NOIP2016組合數問題

題目分析 dp不解釋。首先要來乙個組合數將cnm的值都預處理出來,不過在加起來的時候記得取模。接下來就是二維字首和的事情了。define m 2000 include include include include using namespace std int c m 3 m 3 sum m 3 ...