bzoj4407 於神之怒加強版

2022-04-29 21:54:11 字數 951 閱讀 5300

懵逼烏斯反演裸題

畫完柿子只要預處理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的。而貢獻,是d^k。那麼前面的q對應後面的q+1,前面的q-1對應後面的q,要乘上的就是prime[j]^k

沒取模好還掛了一次。。

#include#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int mod=1e9+7

;int

k;int quick_pow(int

a)

return

ret;

}int pr,prime[5000010],u[5000010],mi[5000010],s[5000010

];bool v[5000010

];void

get_prime()

for(int j=1;j<=pr&&i*prime[j]<=5000000;j++)

else u[i*prime[j]]=-u[i],s[i*prime[j]]=(ll)s[i]*s[prime[j]]%mod;}}

for(int i=2;i<=5000000;i++)s[i]=(s[i]+s[i-1])%mod;

}int

main()

printf(

"%d\n

",ans);

}return0;

}

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 於神之怒加強版

傳送門 題解 推一波公式 你還是需要前置技能 那麼好像可以o tnlogn 直接暴力啊!當然是兩遍根號分塊變成o tn 啊 好訊息過不去。當你莫比烏斯反演發現複雜度不對的話怎麼辦?繼續瞎 化簡!令x pd,那麼有 哎這個式子看起來很和善 後面那個好像是積性函式 逃 那麼線性篩就行啦!問題是怎麼篩呢。...