NOIP組合數選題

2022-03-04 09:34:58 字數 2711 閱讀 4790

前言:

「所有的組合數問題都是好題」

————清華某高材生zhx

組合數問題在近幾年的noip的考試中多次露面,感覺有必要好好學一學

組合數的常見公式: 

題目:

計算係數

noip2011提高組day2第1題

輸入樣例: 

1 1 3 1 2
輸出樣例: 

3
規定(a+b)^k     k為指數            

1 、  二項式的係數就與楊輝三角有關,即與組合數有關        

2、 k為幾,就代表是楊輝三角的第幾行

3、我們將上述二項式展開後可發現: 越往後的每一項,a的指數是在遞減的,而b的指數是在增加的 ,  例如:第一項a的指數是k,b的指數是0   ,最後一項a的指數是0,b的指數是k

4、 拓展:根據展開式可發現,二項式的係數是對稱的

思路講解: 

我們已知上述資訊之後便可輕鬆解決本題啦

1、二項式的指數是k,根據上面的資訊2可知,答案在楊輝三角的第k行

2、根據上述資訊4可知,我們求的是楊輝三角的第k行的第m項或者是第n項(對稱性)

3、此題與原始組合數不同的是:我們需要在係數上乘上 a  的 最終的值,再乘上  b  最終的值   

我們可以思考:如果我們將  a  與    x  等同的看作是乙個未知數的話  ,那麼如果   x最終變成x^n    , a也應該等同的成為   a ^ n   

所以答案就是      a的n次方  乘以   b的m次方    乘以  楊輝三角的第k行,第n項

即    係數最終的答案就是  a^n  *   b^m   *    c 【k】【m】   

4、對於求解  a^n 和 b^m 我們可以用快速冪   ,但是要注意我們在讀入a,b之後一定要先取一次模,否則我們在快速冪第一次計算  a*a  的時候 會炸掉

#include#include

#include

using

namespace

std;

int c[1009][1009

];int quick_power(int a,int b ,int

p)

return

ans;

}int

main()

}a=quick_power(a,n,10007

); b=quick_power(b,m,10007

);

cout

<

<

return0;

}

noip提高組2016

輸入樣例#1: 

1 2

3 3

輸出樣例#1: 

1

輸入樣例#2: 

2 5

4 56 7

輸出樣例#2: 

思路講解

既然上面那題都做完了,這個題也就不難了

這個題是讓你找在不超過它給你的   i 和  j  的範圍之內求組合數 答案是 k  的倍數的數  

我們可以先預處理出2000*2000  以內的所有的組合數

但是如果即使這樣預處理了,我們對於每一組測試資料都暴力的去計算一遍有多少對的話,我們可以發現  2000*2000* 10000  是明顯過不掉這道題的  

我們觀察一下,我們的k值是一直不變的  ,所以我們可以對於當前的每乙個c( i , j)  我們都可以用字首和求出他之前有多少個   ,如果當前這個數是k的倍數的話(即:c( i, j )%k==0)  我們就把剛求出來的字首和+1就是當前的答案

1 #include2 #include3 #include4

5using

namespace

std;67

int c[2020][2020];8

int a[2020][2020];9

intt,k;

10void

c()16}17

}181920

2122

intmain()

31 a[i][i+1]=a[i][i];32}

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

39return0;

40 }

最後加一道最簡單的組合數問題練練手吧

end.

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 ...

NOIP2016 組合數問題

題目描述 題目背景 noip2016 提高組 day2 t1 組合數 表示的是從 n 個物品中選出 m 個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 的一般公式 1 2 n。小蔥想知道如果給定...