洛谷P3746 六省聯考2017 組合數問題

2022-04-30 15:09:12 字數 2144 閱讀 2588

組合數 c_n^mcnm​表示的是從 n 個互不相同的物品中選出 m 個物品的方案數。舉個例子,從 (1;2;3) 三個物品中選擇兩個物品可以有 (1;2);(1;3);(2;3) 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 c_n^mcnm​的一般公式:

c_n^m = \fraccnm​=m!(n−m)!n!​

其中 n! = 1 × 2 × · · · × n。(特別的,當 n = 0 時, n! = 1 ,當 m > n 時, c_n^m =0cnm​=0 )

小蔥在 noip 的時候學習了 c_i^jcij​和 k 的倍數關係,現在他想更進一步,研究更多關於組合數的性質。小蔥發現, c_i^jcij​是否是 k 的倍數,取決於 c_i^j mod kcij​modk 是否等於 0,這個神奇的性質引發了小蔥對 mod 運算(取餘數)的興趣。現在小蔥選擇了是四個整數n; p; k; r,小蔥現在希望知道

\sum_^ c_^ mod p∑i=0inf​cnkik+r​modp

的值。輸入格式:

第一行有四個整數 n; p; k;r,所有整數含義見問題描述。

輸出格式:

一行乙個整數代表答案。

輸入樣例#1: 複製

2 10007 2 0

輸出樣例#1: 複製

8

輸入樣例#2: 複製

20 10007 20 0

輸出樣例#2: 複製

176

• 對於 30% 的測試點, 1 ≤ n; k ≤ 30, p 是質數;

• 對於另外 5% 的測試點, p = 2;

• 對於另外 5% 的測試點, k = 1;

• 對於另外 10% 的測試點, k = 2;

• 對於另外 15% 的測試點, 1 ≤ n ≤ 10^3; 1 ≤ k ≤ 50, p 是質數;

• 對於另外 15% 的測試點, 1 ≤ n × k ≤ 10^6, p 是質數;

• 對於另外 10% 的測試點, 1 ≤ n ≤ 10^9; 1 ≤ k ≤ 50, p 是質數;

• 對於 100% 的測試點, 1 ≤ n ≤ 10^9; 0 ≤ r < k ≤ 50; 2 ≤ p ≤ 2^30 − 1。

作為省選的t3出題人居然給了60分的暴力分,太良心了qwq..

不過正解是死活想不到啊

設$c[i][j]$表示從$i$個元素中,拿所有滿足$x \%k=j $ 的 $x$個元素的方案數

那麼對於第$i$個元素,

不選的方案數為$c[i-1][j]$

選的方案數為$c[i-1][(j-1+k)%k]$

很顯然

可以用矩陣快速冪優化

然後就做完了

這題的關鍵是把楊輝三角的遞推與題目中給出的式子相結合,找到題目中式子的一般規律,

進而通過更高科技的演算法優化

注意$k=1$的特殊情況

#include#include

#include

#include

#define int long long

using

namespace

std;

const

int maxn=1e6;

inline

intread()

while(c>='

0'&&c<='9')

return x*f;

}int

n,mod,k,r;

int c[51][51

];struct

matrix

};matrix mul(matrix x,matrix y)

void

out(matrix x)

matrix fastpow(matrix a,

intp)

return

base;}

main()

洛谷3746 六省聯考2017 組合數問題

組合數 cnmc n mc n m 表示的是從 n 個互不相同的物品中選出 m 個物品的方案數。舉個例子,從 1 2 3 三個物品中選擇兩個物品可以有 1 2 1 3 2 3 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 cnmc n mc n m 的一般公式 cnm n m n m c...

六省聯考2017

luogu lojbzoj 顯然我們只需要考慮最後公布成績的那一天。列舉這一天,預處理字首和之後即可 o 1 計算最小代價。注意倒數第二個subtask這最優的日期就是 min b i 直接計算即可。如果套用通法會爆long long,但是開unsigned long long就行了 include...

題解 六省聯考2017

題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。為了不影響 體驗決定把 刪去,需要請私信我,qq或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...