BZOJ2440 中山市選2011 完全平方數

2021-08-01 15:22:43 字數 955 閱讀 1802

bzoj2440

題意就是求第k個無平方因子數。(題意有問題啊qaq,1也是完全平方數啊)

考慮一下二分答案+判定。

二分乙個數mid,那麼每次就判定1~mid之間有多少個無平方因子數。

容斥一下,答案=所有數-至少乙個質數的平方的倍數的數+至少兩個質數的平方的倍數的數-至少三個質數的平方的倍數的數+……

然後看看每個數的平方對答案的貢獻,若d=

p1∗p

2∗…p

k ,則an

s+=(

−1)k

∗mid

d2發現這個(−

1)k 就是莫比烏斯函式。 那麼

ans=

∑i=1

mid√

μ(i)

∗mid

i2至於二分的上界。。試一試就好了。

#include 

#include

#include

#define n 100005

using

namespace

std;

typedef

long

long ll;

int read()

while(isdigit(ch))

return x*f;

}int t,n;

int miu[n],p[9594],sum[n];

bool not_prime[n];

void get_miu()

miu[i*p[j]]=-miu[i];}}

for(int i=1;i1]+miu[i];

}bool judge(ll mid)

void solve(int x)

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

}int main()

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 如果是兩個素數平方的...