快速荷葉葉變換

2022-04-30 19:18:11 字數 1380 閱讀 7047

可以參考 此部落格 。

我們把 \(\sum\limits^_\sum\limits^_\ (n\mod i)*(m\mod j)\),變成\(\sum\limits^_\ (n\mod i)*\sum\limits^_(m\mod j)\),就有了 \(o(n)\)的方法。

然後 \(n,m \leq 10^9\),顯然超時。

我們再把 \(\sum\limits^_\ (n\mod i)\) 變成 \(\sum\limits^_\ n- \left\lfloor\dfrac\right\rfloor*i\)。

其中的 \(\sum\limits^_\ \left\lfloor\dfrac\right\rfloor\)因為是下取整,所以有很多重複的數字出現。這樣子我們就有了一種 \(o(\sqrt n)\) 的方法(數論分塊)。

按 \(10\) 來說。

\(1\)

\(2\)

\(3\)

\(4\)

\(5\)

\(6\)

\(7\)

\(8\)

\(9\)

\(10\)

\(10\)

\(5\)

\(3\)

\(2\)

\(2\)

\(1\)

\(1\)

\(1\)

\(1\)

\(1\)

每一段的右端點就是 \(\left\lfloor\dfrac\right\rfloor}\right\rfloor\)。也就是 \(n\div(n\div i)\)。

然後每一段再乘以乙個 \(i\) 什麼之類的,最後用 \(n^2\) 減掉就可以了。

const number=1000000007;

var n,m:int64;

function sum(n:longint):int64;

var i,right,num:int64;

begin

sum:=0; i:=1;

while i<=n do

begin

num:=n div i; right:=n div num;

sum:=sum mod number;

inc(sum,num*((i+right)*(right-i+1) div 2));

i:=right+1;

end;

end;

begin

read(n,m);

n:=(((n*n) mod number)-sum(n)) mod number;

m:=(((m*m) mod number)-sum(m)) mod number;

writeln((n*m) mod number);

end.

NOIP提高組模擬 快速荷葉葉變換

我們可以把式子進行拆分,變成 n i 1 nmodi mj 1 m modj 也就是前一半和後一半可以分開計算。假設計算 n i 1 nmodi 列舉出所有情況,發現可以進一步推出公式n2 mi 1 n i i 再推導,發現了對於某乙個i來說,若是 nmodi 0 那麼 nmod i 1 一定等於 ...

快速傅利葉變換 快速數論變換

update 3.29.2017 2月10日初學,記得那時好像是正月十五放假那一天 當時寫了手寫版的筆記 過去近50天差不多忘光了,於是複習一下,具體請看手寫版筆記 參考文獻 picks miskcoo menci 阮一峰 i 表示逆時針旋轉90度 a bi 對應復平面上的向量 複數加法同向量 複數...

快速傅利葉變換

學習快速傅利葉變化是量子計算中的基礎,查了很多資料,以下鏈結可以作為參考 本部落格部分知識學習於 最後這個裡面有解釋蝴蝶效應是怎麼來的!實用數字訊號處理 dft 離散傅利葉變換 o n2 計算多項式乘法 fft 快速傅利葉變換 o n log n 計算多項式乘法 fntt ntt 快速傅利葉變換的優...