BZOJ4818 序列計數(動態規劃,生成函式)

2022-03-20 05:30:28 字數 702 閱讀 2003

bzoj

顯然是求乙個多項式的若干次方,並且是迴圈卷積

或者說他是乙個\(dp\)也沒有問題

發現項數很少,直接暴力乘就行了(\(fft\)可能還慢一些)

然後容斥減掉沒有質數的就行了

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

#define rg register

#define mod 20170408

#define max 20000200

inline int read()

int n,m,p;

int a[100],b[100],c[100];

int ret[100];

void add(int &x,int y)

void multi(int *a,int *b,int *c)

}bool zs[max];

int pri[max/10],tot=0;

int main()

} fpow(a,n,c);add(b[0],mod-c[0]);

printf("%d\n",b[0]);

return 0;

}

bzoj4818 SDOI2017 序列計數

題目鏈結 先考慮暴力 dp f i j 表示前 i 個數,數字之和模 p 餘 j 的方案數。我們先不考慮必須有質數這個條件,先統計出全部方案。然後再減去沒有質數的方案就行了。那麼就有 f i 1 j k p f i j 1 le k le m 然後發現這個其實並不需要 o m 的轉移,因為 j k ...

BZOJ4818 SDOI2017 序列計數

bzoj luogu alice想要得到乙個長度為 n 的序列,序列中的數都是不超過 m 的正整數,而且這 n 個數的和是 p 的倍數。alice還希望,這 n 個數中,至少有乙個數是質數。alice想知道,有多少個序列滿足她的要求。一行三個數,n,m,p 1 le n le 10 9,1 le m...

BZOJ 4818 Sdoi2017 序列計數

bzoj 4818 sdoi2017 序列計數 矩陣乘法 alice想要得到乙個長度為n的序列,序列中的數都是不超過m的正整數,而且這n個數的和是p的倍數。alice還希望 這n個數中,至少有乙個數是質數。alice想知道,有多少個序列滿足她的要求。一行三個數,n,m,p。1 n 10 9,1 m ...