BZOJ 2440 完全平方數 莫比烏斯反演

2021-08-02 10:48:07 字數 938 閱讀 6590

bzoj 2440 完全平方數

參考popoqqq神的ppt

首先二分答案 問題轉化為求[1,x]之間有多少個無平方因子數

根據容斥原理可知 對於sqrt(x)以內所有的質數 有

x以內的無平方因子數

=0個質數乘積的平方的倍數的數的數量(1的倍數)

-每個質數的平方的倍數的數的數量(9的倍數,25的倍數,…)

+每2個質數乘積的平方的倍數的數的數量(36的倍數,100的倍數,…)-…

容易發現每個乘積a前面的符號恰好是 μ(

a)(例如μ(

3)=−

1 ,故9對答案的貢獻為負;μ(

6)=1

,故36對答案的貢獻為正)

x以內i

2 的倍數有⌊x

i2⌋ 個 故有q(

x)=∑

⌊x√⌋

i=1⌊

xi2⌋

#include 

using

namespace

std;

typedef

long

long ll;

const

int n= 1e6+10;

int prime[n],tot;

int mu[n];

void mu()

for (int j=1;prime[j]*i1;

if (i%prime[j]==0)

mu[i*prime[j]]=-mu[i];}}

//for (int i=1;i<=100;i++) printf("%d %d\n",i,mu[i]);

}ll calc(ll mid)

return ans;

}void work()

cout

return

0;}

BZOJ 2440 完全平方數(莫比烏斯函式)

這道題需要驚人的聯想能力和很大的腦洞 然後將它聯絡到莫比烏斯函式上。我也是看神犇的部落格的。首先容易想到二分答案,然後判斷當前的滿足條件的數。具體怎樣得出的請大家自己yy吧。include include include includeusing namespace std 利用莫比烏斯函式求值 d...

bzoj 2440 完全平方數 莫比烏斯函式

題目 題意 第ki 個不是完全平方數的正整數倍的數。對於乙個數t,t以內的數里的非完全平方數倍數的個數 num 1的倍數的數量 乙個質數平方數 9,25,49.的倍數的數量 兩個質數的積平方數 36,100,225.的數量 三個質數balabala 所以u i 就是莫比烏斯函式 求莫比烏斯函式 遞推...

BZOJ 2440 完全平方數

time limit 10 sec memory limit 128 mb submit 966 solved 457 submit status 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而 這絲毫不影...