BZOJ 4870 HEOI 2017 組合數問題

2022-03-27 05:57:11 字數 600 閱讀 9831

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

1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1

一行乙個整數代表答案。

我也是很迷呢,這題如果用組合數公式+性質硬搞什麼也搞不出來,然後就用組合數的實際意義好了,c(i,j)表示從i個物品中選出j個的方案數,那麼原題就是從n*k個物品中選出modk=r個物品的方案數,f[i][j]表示前i個物品,選出j個(mod k)的方案數,那麼f[i][j]=f[i-1][j]+f[i-1][(j-1+k)%k]然後矩陣快速冪優化。。。

#include using namespace std;

int n,p,k,r;

struct matrix

}f,tmp;

inline matrix operator * (matrix a,matrix b)

int main(){

scanf("%d%d%d%d",&n,&p,&k,&r);

long long w = (long long)n*k;

f.ma[0][0]=1;

for(int i=0;i

BZOJ 4870 HEOI2017 組合數問題

題面 time limit 10 sec memory limit 512 mb submit 484 solved 242 submit status discuss 第一行有四個整數 n,p,k,r,所有整數含義見問題描述。1 n 10 9,0 r k 50,2 p 2 30 1 一行乙個整數代...

bzoj 4870 組合數問題

目錄求 sum c mod p 原題傳送門。這不是單位根反演裸題嗎 注意到模數並沒有特殊性質,可以想到從組合數的遞推公式入手。當 k 1 實際上就是快速冪,所以聯想到說不定可以矩陣冪優化。記 f n r sum c 則 f n r sum c times f r j mod k 從組合意義上不難理解...

bzoj4032 HEOI2015 最短不公共子串

字尾自動機 序列自動機 序列自動機這東西好像很高階的樣子。其實很簡單的啦。詳細可以看一下我的部落格序列自動機 對字串a構建字尾自動機 str a 和序列自動機 seq a 類似地,對字串b也構建字尾自動機 str b 和序列自動機 seq b 然後對於4個詢問我們分別拿出1個自動機,如第乙個詢問拿出...