bzoj 2986: Non-Squarefree Numbers
来源:互联网 发布:北风网人工智能百度云 编辑:程序博客网 时间:2024/06/11 10:13
Description
一个正整数K被称为squarefree,如果它没有一个D^2(D>1)这样的约数。
Input
读入一个正整数N
Output
找出第N个不是squarefree的数。1<=N<=10^10
Sample Input
10
Sample Output
27
Hint
前10个非squarefree的数
4 8 9 12 16 18 20 24 25 27
说好双倍经验系列,数据读入大了10倍结果要longlong了是个什么鬼(╯°口°)╯(┴—┴
改了以后还T了(╯°口°)╯(┴—┴
-----------------------------------------------------------------------------------------------------------------------------------
这题可以直接用莫比乌斯函数做。和2440的思路相反
#include<cstdio>#include<string>#include<cstring>using namespace std;int mu[10000001],prime[10000001];bool check[10000001]; int tot;inline void findmu(){ memset(check,false,sizeof(check)); mu[1]=1; int i,j; for(i=2;i<=10000000;i++) { if(!check[i]) { tot++; prime[tot]=i; mu[i]=-1; } for(j=1;j<=tot;j++) { if(i*prime[j]>10000000) break; check[i*prime[j]]=true; if(i%prime[j]==0) { mu[i*prime[j]]=0; break; } else mu[i*prime[j]]=-mu[i]; } }}inline long long gets(long long x){ long long i; long long t=0; for(i=1;i*i<=x;i++) t+=mu[i]*(x/(i*i)); return t;}int main(){ findmu(); long long n; scanf("%lld",&n); long long l=1,r=(long long)2100000000*(long long)100; while(l<=r) { long long mid=(l+r)/(long long)2; long long t=gets(mid); if(mid-t>=n) r=mid-1; else l=mid+1; } printf("%lld\n",l); return 0;}
0 0
- bzoj 2986: Non-Squarefree Numbers
- bzoj 2986 Non-Squarefree Numbers
- bzoj 2986: Non-Squarefree Numbers (容斥原理)
- 【BZOJ】【P2986】【Non-Squarefree Numbers】【题解】【数论】
- BZOJ2986 Non-Squarefree Numbers
- [莫比乌斯函数] BZOJ 2986 Non-Squarefree Numbers & BZOJ 2440 [中山市选2011]完全平方数
- [BZOJ2986]Non-Squarefree Numbers(二分+容斥原理)
- bzoj2986 Non-Squarefree Numbers (莫比乌斯函数)
- Non--Abundant numbers
- Non-random numbers
- non-random numbers
- Squarefree number
- SPOJ 16637. Non-Square Free Numbers
- PE 113 Non-bouncy numbers (dp)
- hdu 3826 Squarefree number
- HDU 3826 Squarefree number
- Squarefree number + 数论
- hdu3826 Squarefree number
- Java基础——集合框架
- 设置图标和启动屏
- JSP解决中文乱码问题
- 第十四周项目一(2)——折腾二维数组
- poj1005
- bzoj 2986: Non-Squarefree Numbers
- Copy List with Random Pointer
- poj 3694 Network(桥+边联通分量+LCA)
- poj 2160 水(拼立方体)
- Openwrt netifd解析
- The Kernel Boot Process
- 通过读取文件头部判断是否为CSV格式文件
- 【css】渐进增强和优雅降级
- sql查找某个字段在某张表中