开始搞反演、、计划用2天(太长了别的算法没时间搞了)

数论题码量比结构体小多了,又好调、、

首先 要求第几个,,由于第几个是单调的,就可以二分了(而我当时连二分都没想到)、

在数二分的1-mid以内的非完全平方数及倍数时,可以考虑容斥、、

-每个单个质数^2的出现次数+每2个质数^2积的出现次数-每三个、、、

由于是枚举的质数的平方,所以只需枚举到 根mid即可

然后观察一下加减的特点   2的平方是*1 、3的平方是*1 、 5的平方是*1 、6的平方是*-1 、10的平方是*-1

于是发现,所有+的都是奇数个质数的积   所有-的都是偶数个质数的积

于是就想到了莫比乌斯函数、、

就可以开始做了

注意:二分时有可能多个数的check值相同,这时要取最左边的(右边的数是完全平方数的倍数,这个数不是,右边的数check值和这个数的一样)

码:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int mu[6000005],tot,i,j,su[6000005],k,T;
bool he[6000005] ;
void shai()
{mu[1]=1;
for(i=2;i<=6000000;i++)
{if(!he[i]){mu[i]=-1;su[++tot]=i;}  for(j=1;j<=tot&&su[j]*i<=6000000;j++){he[i*su[j]]=1;if(i%su[j]==0){mu[i*su[j]]=0;}else mu[i*su[j]]=-mu[i];  }
}
}
long long check(long long o)
{int i;long long ans=0;for(i=1;i*i<=o;i++){ans+=mu[i]*(o/(i*i));  }   return ans;
}
long long erfen()
{
long long   l=1,r=2000000000,lin=1;while(l<r){long long mid=(l+r)>>1;if(check(mid)>=k){r=mid;    lin=mid;   }else l=mid+1;}   return lin;
}
int main()
{shai();
scanf("%d",&T);
while(T--)
{
scanf("%d",&k);   printf("%lld\n",erfen());
}   }

2017.6.3 完全平方数 思考记录相关推荐

  1. 2017.9.5 组合数学 思考记录

    这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...

  2. 2017.9.4 Nim 思考记录

    只要知道nim的结论   这题就是链剖板子题.1A 注意bzoj 的  换行符是     \r!!      \r!!      \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...

  3. 2017.10.28 排序 思考记录

    这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...

  4. 2017.10.28 压缩 思考记录

    这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd   = abRRcdcdcdcdR != Ma ...

  5. 2017.10.6 单词 思考记录

    少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...

  6. 2017.10.5 高速公路 思考记录

    ..一开始死活不知道样例8/3是怎么算出来的.. 后来才发现右端点要-1.. 这个题说是期望,但因为每个点的概率相同,所以直接求和然后除就可以了 维护每个区间的答案,听说直接维护答案很难写,,感觉还可 ...

  7. 2017.10.1 蚯蚓 思考记录

    现在看来这个题真心不难. 如果能保证一个从大到小的顺序的话,对所有的数依次进行相同比例的分裂操作,左右两边一定也是单调的 由于每次要+q,等价于取出元素-q,这在式子里是不影响大小关系的 所以就sor ...

  8. 2017.9.28 产品加工 思考记录

    很早之前做的了.发现bzoj上竟然没提交过 于是又重推了一遍 首先这个ti<=5是用来让n^2的复杂度降一降的, 然后就考虑装每个物品之后各个机器的耗时,同时,对于一个A机器的耗时,可能会有多个 ...

  9. 2017.9.28 降雨量 思考记录

    论逻辑清晰的重要性. 首先大小的关系明摆着是要你建一颗线段树 然后就可以分类讨论了 x没有 y有 x有 y没有 x没有 y没有 x有 y有 对于都没有的情况  只可能是maybe 对于一个没有的情况, ...

最新文章

  1. 知方可补不足~开发人员可以自己定义VS文件模版
  2. 微软在你的计算机里隐藏的秘密
  3. 【STM32】FreeRTOS 列表和列表项
  4. Quartz + spring 定时任务常见错误总结
  5. String和string的区别
  6. springboot配置允许跨域访问
  7. Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令
  8. 从数组中删除最后一项
  9. 62. WWW 服务器
  10. 证明 总偏差平方和 = 回归平方和 + 残差平方和
  11. 做软件测试学编程的十大误区
  12. 支付宝显示服务器网关错误,支付宝服务窗网关问题
  13. 泰克Tektronix示波器软件TDS1012|TDS2002|TDS2004上位机软件NS-Scope
  14. 使用Amazon SageMaker RL 和Unity训练强化学习智能体
  15. 解决2K 显示器的尴尬为MacBook 开启HiDPI(新方法支持M1)
  16. Eclipse调试多线程代码
  17. 根据AD账号直接单点登录到第三方系统
  18. 如何在Google上下载高清原图
  19. MFS分布式文件系统一
  20. Express获取请求参数

热门文章

  1. java knn文本分类算法_使用KNN算法的文本分类.PDF
  2. 关于Python 中的os.mkdir()
  3. MNIST的AlexNet实现
  4. Jade/Pug模板引擎
  5. evoc服务器长鸣报警显示正常,研祥工业服务器出大事了!
  6. html中间大两边小轮播代码,vue使用swiper实现中间大两边小的轮播图效果
  7. java对接支付宝微信银联_JavaWEB后端支付银联,支付宝,微信对接
  8. Lua mysql insert 并发数_高并发 Nginx+Lua OpenResty系列(6)——Lua开发库Mysql
  9. Python刷题-7
  10. automapper自动创建映射_ASP.NET Core教程:ASP.NET Core使用AutoMapper