——>點我跳轉<——
定義 f(n) 是 n 的約數的和,然後 g(n) 則是 1~f(n) 的和。
然後問你 g(g(n)) 是多少。
首先,我們會想到,暴力算是不行的。
然後我們考慮優化算 g(n
)g(n)
g(n)
怎麼弄。
我們先看約數有什麼特別的地方,那有約數,又有字首和,那如果對於乙個數 x
xx,它會是哪些數的因子呢?
x ,2
x,3x
,4x,
...,
kx
x,2x,3x,4x,...,kx
x,2x,3
x,4x
,...
,kx(k=⌊
nx
⌋k=\left\lfloor\dfrac\right\rfloor
k=⌊xn
⌋,也就是會有多少個數含有這個因子)
但是你會想到,就算你每次只列舉因子,你還是會超時。
(g
(50000)=
2056198403
g(50000)=2056198403
g(5000
0)=2
0561
9840
3)然後你會從整除向下取整想到乙個叫做整除分塊的東西。
然後你會想到在乙個塊中,它的 k
kk 都是一樣的,然後因子的大小是每次加一。
那這就是乙個等差序列,可以 o(1
)o(1)
o(1)
搞。那塊的個數是 n
\sqrt
n,那時間就過去了。
#include
#define ll long long
using
namespace std;
ll n;
ll g
(ll now)
return re;
}int
main()
nowcoder 218399 小G的LY數對
點我跳轉 有兩個陣列,要你各選乙個數,使它們異或的值在二進位制中恰好有兩位是 1。問你有多少種選法。我們看到異或,考慮從位數處理。看到只要兩位不同,我們可以考慮用這乙個方法 類似折半?把兩邊每個數對於每一位取反得到的數互相匹配,看有多少個相同的且在兩邊的。那直接匹配相同我們可以用雜湊表來實現。那接著...
小G的約數
題意 題意 題意 小 g定 義了兩個 函式f n 為n 的約數和 小g定義了兩個函式f n 為n的約數和 小g定義了兩 個函式f n 為 n的約數 和 g n f 1 f 2 f n 1 f n 求g g n g n f 1 f 2 f n 1 f n 求g g n g n f 1 f 2 f n ...
NOIP 模擬題 小G的城堡
檔名 輸入檔案 輸出檔案 時間限制 空間限制 castle.pas c cpp castle.in castle.out 1s 128mb 題目描述 小 g 家有一座城堡。城堡裡面有 n 個房間,每個房間上都寫著乙個數字 p i 小 g 拉著幾個小夥伴在城堡裡面玩耍,他們約定,如果某個人當前站在 i...