bzoj4407 於神之怒加強版

2022-03-26 04:15:13 字數 1548 閱讀 2877

傳送門:

【題解】

推一波公式

你還是需要前置技能:

那麼好像可以o(tnlogn)直接暴力啊!

當然是兩遍根號分塊變成o(tn)啊

好訊息過不去。

當你莫比烏斯反演發現複雜度不對的話怎麼辦?繼續瞎**化簡!

令x=pd,那麼有

哎這個式子看起來很和善

後面那個好像是積性函式(逃

那麼線性篩就行啦!!!

問題是怎麼篩呢。我們把每個因數分開考慮後發現。

如果這個因數i只出現一次,貢獻顯然為(i的k次方-1),這可以直接寫出來的qwq

如果出現了多次,我們發現只有mu(1)和mu(i)是有值的,所以只考慮這兩項,寫出來發現是在前面的基礎上乘上了(i的k次方)

於是就能篩啦!

# include # include 

# include

//# include

using

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef unsigned

long

long

ull;

const

int m = 5e5 + 10

;const

int mod = 1e9+7

;# define rg register

# define st

static

intn, m, k;

const

int f = 5000000

;bool isnp[f + 10

];int p[f/3], pn=0

;int f[f + 10], s[f/3

];inline

int pwr(int a, int

b)

return

ret;

}inline

void

sieve()

for (int j=1; j<=pn && i*p[j]<=f; ++j)

f[i*p[j]] = 1ll * f[i] * f[p[j]] %mod;}}

for (int i=1; i<=f; ++i)

}inline

void

sol()

printf(

"%d\n

", ans);

}int

main()

view code

bzoj 4407 於神之怒加強版

time limit 80 sec memory limit 512 mb submit 624 solved 297 submit status discuss 給下n,m,k.求 輸入有多組資料,輸入資料的第一行兩個正整數t,k,代表有t組資料,k的意義如上所示,下面第二行到第t 1行,每行為兩...

bzoj 4407 於神之怒加強版

給下n,m,k.求 輸入有多組資料,輸入資料的第一行兩個正整數t,k,代表有t組資料,k的意義如上所示,下面第二行到第t 1行,每行為兩個正整數n,m,其意義如上式所示。如題1 2 3 3 20感覺是道比較水的數論題?提個d k隨手莫比烏斯反演一下,再把 跟d k放在一起,預處理出來就好了。瑪雅,1...

bzoj4407 於神之怒加強版

懵逼烏斯反演裸題 畫完柿子只要預處理s i sigema d i d u i d d k 線性篩它一手 i prime j 0,我們換種表示方法,設i x p q,對於s i 有貢獻的d,只能具有q或q 1個p,而對於i prime j 也就是x p q 1 來說,有貢獻的d是具有q 1或q個p的。...