題面戳我
考慮二分答案,二分了乙個答案n
在n以內,我們需要快速求出題目要我們求的數的個數
所以可以用莫比烏斯反演
設f[i]表示只含有i^2不含其它完全平方數的數的個數 g[
i]=∑
i|di
f[d]
則g[i]表示所有i^2的倍數g[
i]=⌊
ni2⌋
f[i]=∑i
|dim
u[d]
f[d]
f[1]即為二分所求
# include
# define rg register
# define il inline
# define fill(a, b) memset(a, b, sizeof(a))
using
namespace
std;
typedef
long
long ll;
const
int _(1e4 + 10), __(1e6 + 10);
il ll read()
int k, prime[__], isprime[__], num, mu[__];
ll ans;
il void prepare()
else mu[i * prime[j]] = -mu[i];}}
}il ll check(rg ll n)
int main(rg int argc, rg char *argv)
printf("%lld\n", ans);
}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 如果是兩個素數平方的...