完全平方数

  小 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.

  

最新文章

  1. 项目中可能用到的demo
  2. [MetaHook] Find a function signature
  3. 【CCCC天梯赛决赛】
  4. Jenkins 2.7.3 LTS 发布
  5. [CareerCup] 16.5 Semphore 信号旗
  6. android: 播放视频
  7. 模块在insmod之后无法rmmod问题
  8. Repeater 合并单元格
  9. java根据sessionid获取session
  10. Playing with cubes II
  11. vs2015web工程中的html引用压缩后css后无法智能提示的问题解决
  12. session的使用
  13. 老李分享:性能测试你不应该只知道loadrunner(1)
  14. Win7下C:\Users\Cortana以账户名称命名的系统文件夹用户名的修改
  15. 【swift】ios中生成二维码
  16. JavaScript prototype详解
  17. (24)How generational stereotypes hold us back at work
  18. itchat
  19. Spring Boot 入门day01
  20. [erlang] mnesia

热门文章

  1. scrapy(2)——scrapy爬取新浪微博(单机版)
  2. request.getRequestDispatcher不能实现页面跳转的原因
  3. 个人作业4 alpha阶段 个人总结
  4. 【week2】 四则运算改进
  5. intellij idea 如何将一个普通项目转换为maven项目
  6. 【C/C++语法外功】类的静态成员理解
  7. matlab isfield
  8. BZOJ 1149 风铃(树形DP)
  9. 【bzoj5094】硬盘检测 乱搞
  10. 前端基础:HTML标签(上)