洛谷P2424 約數和(除法分塊)

2021-10-02 11:21:22 字數 943 閱讀 1815

展開

題目背景

smart最近沉迷於對約數的研究中。

題目描述

對於乙個數x,函式f(x)表示x所有約數的和。例如:f(6)=1+2+3+6=12。對於乙個x,smart可以很快的算出f(x)。現在的問題是,給定兩個正整數x,y(x輸入格式

輸入檔案僅一行,兩個正整數x和y(x輸出格式

輸出只有一行,為f(x)+f(x+1)+……+f(y)的值。

輸入輸出樣例

輸入 #1複製

2 4輸出 #1複製

14輸入 #2複製

123 321

輸出 #2複製

72543

說明/提示

對於20%的資料有1≤x<y≤105。

對於60%的資料有1≤x<y≤1*107。

對於100%的資料有1≤x<y≤2*109。

思路:

同c - fear factoring gym - 101615c(求約數和,除法分塊)

暴力的思路是:對於 i (i ≤ n),存在n / i個i,和為n / i * i。

除法分塊的意思是,n / i 的值對於連續的i都是確定的,而且這個連續i的右邊界為n / (n / i)。

那麼對於這個連續的範圍,約數是等差遞增的,而且數目是相同的。

結果就是等差數列求和再乘上數目。

等差數列求和為 (l + r) * (r - l + 1) * n / i.

#include

using

namespace std;

typedef

unsigned

long

long ll;

ll cal

(ll n)

return ans;

}int

main()

洛谷 P2424 約數和

1s 128mb smart最近沉迷於對約數的研究中。對於乙個數x,函式f x 表示 x 所有約數的和。例如 f 6 1 2 3 6 12 對於乙個 x smart可以很快的算出f x 現在的問題是,給定兩個正整數x,y x,smart希望盡快地算出f x f x 1 f y 的值,你能幫助smar...

洛谷P1734 最大約數和

選取和不超過s的若干個不同的正整數,使得所有數的約數 不含它本身 之和最大。輸入格式 輸入乙個正整數s。輸出格式 輸出最大的約數之和。輸入樣例 1 複製11 輸出樣例 1 複製9 樣例說明 取數字4和6,可以得到最大值 1 2 1 2 3 9。資料規模 s 1000 01揹包,預處理出每個數的約數和...

洛谷P4178 Tree 分塊

給你一棵樹,以及這棵樹上邊的距離,問有多少對點它們兩者間的距離小於等於kkk。這道題是應該加強資料了。當然如果這道題不打算做點分治模板題的話可以不用 o n nlog n o n sqrt n log sqrt n o nn logn 分塊在洛谷優秀的o2o2 o2下過了。我們假設1 11為樹根,d...