BZOJ2440 中山市選2011 完全平方數

2022-05-19 05:42:27 字數 979 閱讀 2397

題意描述

原題

一句話描述:

求第k個不是完全平方數的倍數的數。

k≤$10^$

題解:首先,直接求第$k$個不是完全平方數倍數的數不好求,我們不妨將它轉換為乙個判定問題:對於乙個確定的常數$x$,他是不是第k個不是完全平方數倍數的數。這句話等價於:$[1,x]$是否有k個不是完全平方數倍數的數,這個怎麼求呢?

根據容斥原理,答案就是:0個質數乘積的平方的倍數的數量(1的倍數)- 1個質數乘積的平方的倍數的數量(4,9,25的倍數)+ 2個質數乘積的平方的倍數的數量(36,100的倍數)。

恰好發現,$i^2$對應的符號就是$μ(i)$,所以答案就是

那麼我們二分一下$x$,就能找到答案了。二分的範圍是$[1,k*2]$.

**實現:

#include#include

#include

#include

const

int maxn = 1e6+10

;typedef

long

long

ll;int

mu[maxn],prime[maxn],vis[maxn];

void init_mu(int

n)

for(int j=0;j)

else }}

}inline ll find(ll x)

return

ans;

}inline ll calc(ll k)

returnr;}

intt;

ll k;

intmain()

return0;

}

view code

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