BZOJ 2440 完全平方数
来源:互联网 发布:数据存储计量单位 编辑:程序博客网 时间:2024/05/22 04:46
BZOJ 2440 完全平方数
参考PoPoQQQ神的ppt
首先二分答案 问题转化为求[1,x]之间有多少个无平方因子数
根据容斥原理可知 对于sqrt(x)以内所有的质数 有
x以内的无平方因子数
=0个质数乘积的平方的倍数的数的数量(1的倍数)
-每个质数的平方的倍数的数的数量(9的倍数,25的倍数,…)
+每2个质数乘积的平方的倍数的数的数量(36的倍数,100的倍数,…)-…
容易发现每个乘积a前面的符号恰好是
x以内
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N= 1e6+10;int prime[N],tot;int mu[N];void Mu(){ mu[1]=1; for (int i=2;i<N;i++){ if (!prime[i]){ prime[++tot]=i; mu[i]=-1; } for (int j=1;prime[j]*i<N;j++){ prime[prime[j]*i]=1; if (i%prime[j]==0){ mu[i*prime[j]]=0; break; } mu[i*prime[j]]=-mu[i]; } } //for (int i=1;i<=100;i++) printf("%d %d\n",i,mu[i]);}LL calc(LL mid){ LL ans=0; for (LL i=1;i*i<=mid;i++){ ans+=mu[i]*(mid/(i*i)); } return ans;}void work(){ int K ; cin>>K; LL L=1,R=1LL<<32,mid,ans=1; while (L<=R){ LL mid=(L+R)>>1; LL ret=calc(mid); if (ret>=K)R=mid-1,ans=mid; else L=mid+1; } cout<<ans<<endl;}int main(){ Mu(); int Case;scanf("%d",&Case); while (Case--){ work(); } return 0;}
阅读全文
0 0
- BZOJ 2440 完全平方数
- BZOJ 2440 完全平方数
- BZOJ 2440 完全平方数
- 完全平方数 BZOJ
- bzoj/hysbz-2440-完全平方数
- bzoj 2440: [中山市选2011]完全平方数
- BZOJ系列2440《[中山市选2011]完全平方数》题解
- 【bzoj 2440】: [中山市选2011]完全平方数
- [莫比乌斯函数]BZOJ 2440 完全平方数
- BZOJ 2440: [中山市选2011]完全平方数
- BZOJ 2440 完全平方数-莫比乌斯函数
- bzoj 2440: [中山市选2011]完全平方数
- 完全平方数 [Bzoj 2440,中山市选2011]
- BZOJ 2440 [中山市选2011]完全平方数
- BZOJ 2440: [中山市选2011]完全平方数
- bzoj 2440: [中山市选2011]完全平方数
- BZOJ 2440 [中山市选2011] 完全平方数
- BZOJ 2440 [中山市选2011]完全平方数
- 机器人增加特殊动作代码
- 《 降伏其心(二)》
- bzoj 1150: [CTSC2007]数据备份Backup (贪心+优先队列+链表)
- 将博客搬至CSDN
- [leetcode]: 155. Min Stack
- BZOJ 2440 完全平方数
- 基于Selenium的web自动化框架(python)
- CYUSB68013主机程序开发
- Spring 注解事务大全
- java Cookie 设置和读取
- 如果maven项目没有导入的提示,可能是没有依赖
- OOAD Lab4实验文档
- C++在1秒内生成不同的随机数
- Java的语法规范