牛客挑戰賽37 牛牛與組合數數學(小白視角)

2021-10-03 03:35:04 字數 879 閱讀 7501

在牛客裡我已經不是第一次遇到求組合數了,但是由於組合數cn

m是好久之前學的,遇到題目時就懵了…… 具體格式:cn

m=n!/((n-m)!*m!),希望能夠通過本次解析題目加深對組合數的理解。

牛客網題目鏈結

該題我認為唯一的難點就是p的取值範圍太大,不可以單純用變數來儲存p的值。因為題目輸出要求並不高,只要判斷cn

m與p是否相等。我們可以採用輸入類(string)p再用字串化整數、分步求餘的方式一步一步轉換為能夠被變數儲存的數值a,再通過分步求餘的方式將cn

m求出b,問題變成判斷a與b的數值是否相等

ac**:

#include

using namespace std;

#define ll long long

const

int mod=

1e9+7;

//將輸入轉換為類

//再通過分步求餘的方式得到大小合適的sum

//sum=n!/(m!*(n-m)!)

//sum*(n-m)!=n!=sum1

intmain()

本題很簡單,關鍵就是思維要清晰:找出問題關鍵 (cn

m與p是否相等—轉換—a與b是否相等)。

我一開始做這道題時,只想到將cn老鐵的關注是鼓勵我寫部落格的最大動力~

牛客挑戰賽30 A 小G數數

思路 先考慮中間b,c的情況,bac,我們先找出所有滿足b,c的情況並存到陣列裡,注意陣列大小 然後,對於每對b,c,求出可以的aa和ad數量,相乘得到針對這對b,c的所有可能 然後所有結果相加。如下 include include include include include include i...

牛客挑戰賽30 A 小G數數

給你乙個1 n的排列a1,a2.ana1,a2.an,問有多少個四元組 a,b,c,d 滿足a b c d且aa示例1 複製4 1 3 2 4複製 1思路 這道題暴力也可做出來,夠毒瘤的,不過暴力是不夠的,應該用dp,定義f i j 表示第j個位置比i小的數的數量,然後雙迴圈遍歷陣列。include...

牛客挑戰賽30D 小A的昆特牌(組合數學)

傳送門 很容易寫出乙個暴力 sum r 即列舉選了多少個步兵,然後用插板法算出方案數 我們對這個換一種角度考慮,可以看做是從 0,0 走到 s,n m 且必須經過 l,n r,n 這條直線的方案數 這個就等價於第 l 步向右走時縱座標在 0,n 1 的方案數減去第 r 1 步向右走時在 0,n 1 ...