bzoj2440 中山市選2011 完全平方數

2021-07-27 08:02:42 字數 1007 閱讀 2868

莫比烏斯函式的應用

首先二分答案轉成判定性問題,判定乙個[1,n]有多少數不是完全平方數的倍數。

乙個數是完全平方數的充要條件是它包含了某個素數的平方。

那麼應用容斥,符合條件的數的個數=n−

n4−n

9−n25

+n36.

..,容易發現,如果乙個數是某個素數的平方,那麼它的係數一定是−1

;如果是兩個素數平方的乘積,那一定是+1

,因為被減了兩次所以要加回來;如果是三個素數的平方的乘積,那就是+1

,因為前面被減了3次又加了3次,所以應該再減一次;如果是四個素數的平方乘積,那麼前面總共加了−c

14+c

24−c

34=−

2 ,我們希望它的結果是−1

是,所以要加上…以此類推

你會發現係數正好等於那個數的μ(

) ,因為其分類方法和μ(

) 的定義本來就是吻合的。

這樣的話就可以直接做了。方法就是二分+容斥統計。質數只需要列舉到根號。

複雜度o(t

logn

n−−√

)

//莫比烏斯函式

#include

#include

#define ll long long

#define maxn 5000000ll

using namespace std;

int prime[maxn+10], mark[maxn+10], mu[maxn+10];

ll con[maxn+10];

void init()

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

for(i=1;i<=maxn;i++)con[i]=(ll)i*i

*mu[i];

}ll cnt(ll x)

int main()

printf("%lld\n",l+1);

}return

0;}

bzoj2440 中山市選2011 完全平方數

time limit 10 sec memory limit 128 mb submit 2219 solved 1067 submit status discuss description 小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些 數看起來很令人難受。由此,他也討厭所有...

BZOJ2440 中山市選2011 完全平方數

求第k個非完全平方數 先二分一下,問題變成1 x有多少個非完全平方數,知道平方數的集合,可以容斥一下 為了敘述方便,下文乙個數可代表其平方的倍數的集合 被乙個集合包含的只有質數,被兩個集合包含的是質因數個數為2的數 而且所有考慮的數都不含平方因子,可以發現和 一樣,被考慮進去的數的 值就是他的係數 ...

bzoj2440 中山市選2011 完全平方數

題目鏈結 求第k kk個不含平方因子的自然數。預處理出 x x k mu x x leq sqrt k x x k 二分答案ans ansan s,則問題轉化為求不大於ans ansan s的不含平方因子的自然數個數xxx。根據容斥原理。x i 1a ns i an si 2x sum frac x...