完全平方数

  小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。 
  这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了小X。小X很开心地收下了。 
  然而现在小 W 却记不起送给小X的是哪个数了。你能帮他一下吗?

  还记得第一次接触这道题是一年前吧..那时候参加了一场某OJ的比赛

  然后并不会做..在discuss里面发现是“BZOJ2440原题”

  然后看到了一个叫做莫比乌斯函数的东西...很努力地看但是仍然没看懂...

  也奇怪..现在就能看懂了呢...

  

  莫比乌斯函数:

  μ(1)=1;

  对于每个质因子的次数都为1的数n,假设其能拆分出k个质因子,μ(n)=(-1)^k

  其他情况下μ(n)=0

  构造方法:

  首先容易证明莫比乌斯函数是积性函数

  然后用线筛

procedure build;
var m:int64;
i,j:longint;
begin
fillchar(vis,sizeof(vis),true);
prime[]:=;
m:=trunc(sqrt(INF));mu[]:=;
for i:= to m do
begin
if vis[i] then
begin
inc(prime[]);
prime[prime[]]:=i;
mu[i]:=-;
end;
for j:= to prime[] do
begin
if i*prime[j]>m then break;
vis[i*prime[j]]:=false;
if i mod prime[j]= then
begin
mu[prime[j]*i]:=;
break;
end;
mu[prime[j]*i]:=-mu[i];
end;
end;
end;

  对于这道题,很容易想到二分答案+容斥

  然后发现由偶数个次数为一的质数乘起来的完全平方因子,对答案的贡献是正的,奇数个是负的

  这个就可以用莫比乌斯函数来替代

 program bzoj2440;
const INF = ;maxn = ;
var test,L,R,ans,k,mid:int64;
tt:longint;
prime,mu:array[-..maxn]of int64;
vis:array[-..maxn]of boolean; procedure build;
var m:int64;
i,j:longint;
begin
fillchar(vis,sizeof(vis),true);
prime[]:=;
m:=trunc(sqrt(INF));mu[]:=;
for i:= to m do
begin
if vis[i] then
begin
inc(prime[]);
prime[prime[]]:=i;
mu[i]:=-;
end;
for j:= to prime[] do
begin
if i*prime[j]>m then break;
vis[i*prime[j]]:=false;
if i mod prime[j]= then
begin
mu[prime[j]*i]:=;
break;
end;
mu[prime[j]*i]:=-mu[i];
end;
end;
end; function solve(x:int64):int64;
var sum:int64;
i:longint;
begin
sum:=;
for i:= to trunc(sqrt(x)) do
inc(sum,(x div (int64(i)*i))*mu[i]); exit(sum);
end; begin
assign(input,'bzoj2440.in');reset(input);
readln(test);
build;
for tt:= to test do
begin
readln(k);
L:=;R:=INF;ans:=-;
while L<=R do
begin
mid:=(L+R) >> ;
if solve(mid)>=k then
begin
ans:=mid;R:=mid-;
end else L:=mid+;
end;
writeln(ans);
end;
end.

  

[BZOJ2440]完全平方数解题报告|莫比乌斯函数的应用的更多相关文章

  1. BZOJ2440 中山市选2011完全平方数(容斥原理+莫比乌斯函数)

    如果能够知道不大于n的合法数有多少个,显然就可以二分答案了. 考虑怎么求这个.容易想到容斥,即枚举完全平方数.我们知道莫比乌斯函数就是此种容斥系数.筛出来就可以了. 注意二分时会爆int. #incl ...

  2. 完全平方数 HYSBZ - 2440 (莫比乌斯函数容斥)

    完全平方数 HYSBZ - 2440 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他 ...

  3. [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】

    题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...

  4. [luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2568#sub 题目大意: 计算​$\sum_{x=1}^n\sum_{y=1}^n [gcd(x,y)==p ...

  5. BZOJ2440: [中山市选2011]完全平方数 容斥原理_莫比乌斯函数

    emmm....... 数学题都不友好QAQ...... Code: #include <cstdio> #include <algorithm> #include <c ...

  6. [计蒜客] tsy's number 解题报告 (莫比乌斯反演+数论分块)

    interlinkage: https://nanti.jisuanke.com/t/38226 description: solution: 显然$\frac{\phi(j^2)}{\phi(j)} ...

  7. [jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

    题目链接: https://jzoj.net/senior/#main/show/6084 https://www.luogu.org/problemnew/show/P4916 题目: 题解: 注: ...

  8. BZOJ2440(容斥+莫比乌斯函数)

    题目本质: 首先有如下结论: 而通过写一写可以发现: 举例来讲,36及其倍数的数,会被1的倍数加一遍,被4的倍数扣一遍,会被9的倍数扣一遍,而为了最终计数为0,需要再加回来一遍,所以在容斥里面是正号. ...

  9. 【BZOJ2440】完全平方数 [莫比乌斯函数]

    完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 小X自幼就很喜欢数. 但奇怪的是 ...

随机推荐

  1. ACM 第四天

    A - 最短路 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的 ...

  2. Zigbee安全基础篇Part.1

    原文地址: https://www.4hou.com/wireless/14211.html 导语:ZigBee是一种开源无线技术,用于低功耗嵌入式设备(无线电系统).本文探讨了ZigBee协议的可用 ...

  3. C# 使用this的形参

    示例1: public static RectangleF TransformRect(this Matrix mat, RectangleF rect) 是向Matrix类扩展带有Rectangle ...

  4. WPF对某控件添加右键属性

    代码创建右键属性 ContextMenu cm = new ContextMenu(); MenuItem mi = new MenuItem(); mi.Header = "打开此文件所有 ...

  5. 7款很棒的 HTML5 视频播放器

    做个连接:http://www.cnblogs.com/lhb25/archive/2011/06/27/7-great-html-5-video-player-scripts.html

  6. JavaScript Array 类型

    除 Object类型外,Array 类型算是ECMAScript中最常用的类型了,而且,ECMAScript中的数组和其他多数语言的数组有着非常大的差别,虽然这些数组都是数据的有序列表,但与其他语言不 ...

  7. Qt Pro文件与Qt模块启用

    看qt论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 一.从哪开始呢 不妨先看个例子吧: #include <QtCore/QCoreApplication& ...

  8. 前端基础:JavaScript BOM对象

    JavaScript BOM对象 JavaScript Window - 浏览器对象模型 浏览器对象模型(BOM)使JavaScript有能力与浏览器"对话". 浏览器对象模型(B ...

  9. InnoDB实现MVCC原理

    ​ MVCC(Multi-Version Concurrent Control),即多版本并发控制,通过保存数据在某个时间点的快照来实现,因此每个读操作都会看到一个一致性的视图,并且可以实现非阻塞的读 ...

  10. [洛谷P2057][SHOI2007]善意的投票

    题目大意:有$n(n\leqslant300)$个人,每个人可以选择$0$或$1$,每个人最开始有意愿,有$m(m\leqslant\dfrac{n(n-1)}2)$对好朋友.定义一次的冲突数为好朋友 ...