bzoj 1968 整除分塊

2021-08-30 06:25:01 字數 467 閱讀 2390

題目很裸,求∑i=1~n⌊n/i⌋

這個東西可以直接暴力o(n),但對於這個複雜度來說顯然不優秀

直接列舉的話會發現很多項的值都是相同的,而且呈塊狀分布,那麼就可以用道整除分塊來解決

有一篇部落格講了證明寫的還行

好了現在我們就可以在sqrt(n)的時間內求出這個值了

然鵝整除分塊經常套這莫反,有時需要求mu或者phi的字首和,就需要用到杜教篩,然後我不會就溜了

結論:乙個值相同的塊的最後乙個元素是n/(n/i)

貼**走人

#include#include#include#includeusing namespace std;

int n;

long long ans = 0;

int main()

cout << ans << endl;

return 0;

}

整除分塊(數論分塊)

乙個有 趣的問題 求 sum n lfloor frac ni rfloor n leq 10 顯然不能直接做廢話 經過一番冷靜推理暴力打表 我們發現以下性質 1.large lfloor frac ni rfloor 最多只有 2 sqrt 種取值 證明 對於 i le sqrt,只有 sqrt ...

BZOJ1257 餘數之和,整除分塊

給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值 其中k mod i表示k除以i的餘數。例如j 5,3 3 mod 1 3 mod 2 3 mod 3 3 mod 4 3 mod 5 0 1 0 3 3 7 輸入僅一行,包含兩個整數n,k。1 n ...

整除分塊思路

求解 i 1n n i sum n frac i 1n in 一般思路 o n 求解 但用分塊可以達到 o n sqrt n 複雜度 理解 為了避免每個 i 都計算一次,我們需要分塊 i 不同時,有 k kk 個 ni frac in 仍然相同,將他們分為一塊,貢獻即為 k ni k frac k ...