陣列 字首和 字首積及其應用

2021-09-08 10:55:50 字數 568 閱讀 3978

字首和、字首積也稱字首和陣列,字首積陣列。

給一陣列a,

字首和:新建一陣列b,陣列中每一項b[i]儲存a中[0…i]的和;

字尾和:新建一陣列b,陣列中每一項b[i]儲存a中[i…n-1]的和;

字首積:新建一陣列b,陣列中每一項b[i]儲存a中[0…i]的積;

字尾積:新建一陣列b,陣列中每一項b[i]儲存a中[i…n-1]的積;

給定浮點陣列a,求一陣列b,b[i]=a[0]*a[1]*…*a[i-1]*a[i+1]*…*a[n-1],不能使用除法,不允許新開陣列。

思路:先求「字尾積」:

for(int i=n-1;i>=0;i—) b[i]=a[i]*((i==n-1)?1:b[i+1]);

順帶求「字首積」:

for(int i=0,j=1;i求陣列中連續一段和,絕對值最小?

思路:字首和的性質:a[i]+a[i+1]+…+a[j]=sum[j]-sum[i-1]

字首和排序,取最小

把乙個陣列從中間p位置分開,使得a[0]+…+a[p-1]與a[p]+a[p+1]+…+a[n-1]差值最小?

思路:

積性函式字首和

最近突然做到一些求積性函式字首和的題,用到了各種篩,有一題用到 min 25 篩法,於是好好學習了一波,運用極不熟練。後來又遇到一道杜教篩的題,結果發現自己連 phi x 字首和都不會推了?嚇得我趕緊複習 寫部落格。常見 完全 積性函式 整除分塊 dirichlet 卷積 埃氏篩 這裡還是簡單介紹一...

積性函式求字首和

若函式f滿足 a,b互質有f a b f a f b 我們則稱f是積性函式。常見的比如尤拉函式,莫比烏斯函式,都屬於積性函式。線性篩法,利用積性函式的積性,篩素數同時可以計算積性函式。然而有些問題要求低於線性的複雜度。同樣利用積性函式的性質。舉常見的莫比烏斯函式為例。求 ni 1 i 1 n 10 ...

字首和的應用

題目1 k倍區間 給定乙個長度為 n 的數列,a1,a2,an,如果其中一段連續的子串行 ai,ai 1,aj 之和是 k 的倍數,我們就稱這個區間 i,j 是 k 倍區間。你能求出數列中總共有多少個 k 倍區間嗎?輸入格式 第一行包含兩個整數 n 和 k。以下 n 行每行包含乙個整數 ai。輸出格...