序列計數 count

2022-05-09 12:12:13 字數 910 閱讀 6657

portal -->broken qwq

​​   給你乙個長度為\(n\)的序列,序列中的每個數都是不超過\(m\)的正整數,求滿足以下兩個條件的序列數量:

1.序列中至少有乙個質數

2.序列中\(n\)個數之和為\(p\)的倍數

​​   資料範圍:\(1<=n<=10^9,1<=m<=2*10^7,1<=p<=100\)

​​   我的媽呀真實智力**。。為什麼連最基礎的矩乘優化都忘了==

​​   記\(f[i][j]\)表示前\(i\)個數和模\(p\)為\(j\)的答案,然後轉移我們矩乘一下就好了

​   至於必須滿足其中乙個數是質數,我們考慮容斥,先算出所有的,然後再把所有的素數去掉再算一遍轉移矩陣,然後再算一次答案兩個相減就好了

​​   然而如果像我一開始一樣弱智寫了個\(n^3\)矩乘只能拿\(50\)

​​   這題實際上可以直接\(f[i+1][(j+k)\%p]=f[i][j]*f[i][k]\)就完事了,所以只要\(n^2\)就好了,真實智力**qwq

​​   **大概長這個樣子

#include#include#includeusing namespace std;

const int m=2*(1e7)+10,mod=20170408;

int add(int x,int y)

int mul(int x,int y)

int n,m,p,ans1,ans2,cnt;

struct mtrix

void setunit(int _n)

friend mtrix operator * (mtrix &x,mtrix &y)

void prework(int n) }}

int main()

count 數字計數方法

給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。輸入檔案中僅包含一行兩個整數a b,含義如上所述。輸出檔案中包含一行10個整數,分別表示0 9在 a,b 現了多少次。1 99 9 20 20 20 20 20 20 20 20 20 30 的資料中,a b ...

BZOJ1833 count 數字計數

題目描述 給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。輸入輸入檔案中僅包含一行兩個整數a b,含義如上所述。輸出輸出檔案中包含一行10個整數,分別表示0 9在 a,b 中出現了多少次。樣例輸入 1 99樣例輸出 9 20 20 20 20 20 20 2...

ZJOI2010 count 數字計數

description 給定兩個正整數 a 和 b,求在 a b 中的所有整數中,每個數碼 digit 各出現了多少次。input 輸入檔案中僅包含一行兩個整數 a b,含義如上所述。output 輸出檔案中包含一行10個整數,分別表示0 9在 a b 中出現了多少次。sample input 1 ...