bzoj2440 中山市選2011 完全平方數

2021-07-29 12:26:18 字數 1025 閱讀 2700

題意:

小x討厭所有是完全平方數的正整數倍的數。你要選第 k個小x不討厭的數送給了小x。問這個數是多少。

題解:

二分+容斥原理+莫比烏斯函式

中山市選怎麼辣麼神..//還好不是那年的

小x討厭的數x就是有某個質因子的指數≥2的數,於是就想到了μ(

x)=0

。 那麼要計算它不討厭的數的話,假設這個數為ans。

那麼就要求an

s−an

s22−

ans3

2−…+

ans(

2×3)

2+…=

k 就是利用容斥原理,把是完全平方數的正整數倍的數減掉,讓剩下的數的個數恰為

k 。

於是觀察一下上面那個式子,再聯想mo

bius

函式的定義,就會發現(?)容斥中的係數就是mo

bius

函式。

所以就二分答案通過這個來驗證就好了。

//不要問我為什麼二分的上限是2k

我也不知道

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

#define maxn 51000

bool ispri[maxn];

ll mu[maxn],pri[maxn],cnt;

void mobius(ll lim)

for (ll j=1;j<=cnt && pri[j]*i<=lim;j++)

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

}ll check(ll x)

int main()

printf("%lld\n",ret);

}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 完全平方數

莫比烏斯函式的應用 首先二分答案轉成判定性問題,判定乙個 1,n 有多少數不是完全平方數的倍數。乙個數是完全平方數的充要條件是它包含了某個素數的平方。那麼應用容斥,符合條件的數的個數 n n4 n 9 n25 n36.容易發現,如果乙個數是某個素數的平方,那麼它的係數一定是 1 如果是兩個素數平方的...