[SDOI2015]序列統計

題意:給定整數 x,求全部能夠生成出的,且知足數列中全部數的乘積 mod m 的值等於 x 的不一樣的數列的有多少個。html

解題方法:函數

設f[i][j],表示選了i個數,mod m等於jspa

暴力DP轉移,$O(nm^2)$,GGhtm

而後咱們發現,沒有必要一位一位轉移,能夠倍增轉移,這樣時間複雜度能夠達$到O(m^2log n)$it

這樣依舊沒法經過此題class

咱們觀察DP式子 $f[i*2][j]=\sum\limits_{xy mod m==j} f[i][x]*f[i][y]$方法

若是將xy轉換成a+b的話 咱們能夠經過FFT解決問題im

想到對數函數,而後預處理出每一個數在模m下的對數便可時間

時間複雜度爲O(m logn logm)生成

相關文章
相關標籤/搜索