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