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