设为首页 加入收藏

TOP

BZOJ2440(完全平方数)二分+莫比乌斯容斥
2015-07-24 06:00:35 来源: 作者: 【 】 浏览:6
Tags:BZOJ2440 完全 平方 )二分 莫比 乌斯 容斥

题意:完全平方数是指含有平方数因子的数。求第ki个非完全平方数。


解法:比较明显的二分,getsum(int middle)求1-middle有多少个非完全平方数,然后二分。求1-middle的非完全平方数个数可以用总数减掉完全平方数个数。计算完全平方数的个数用容斥:

首先加上n/(2*2)+n/(3*3)+n/(5*5)+n/(7*7)...+...然后减掉出现两次的,然后加上三次的...奇加偶减。这就是mou的原型,用mou数组计算很简单;

\

代码:

/******************************************************
* @author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
           #include 
           
             #include 
            
              #include 
             
               //freopen ("in.txt" , "r" , stdin); using namespace std; #define eps 1e-8 #define zero(_) (abs(_)<=eps) const double pi=acos(-1.0); typedef unsigned long long LL; const int Max=100010; const LL INF=2e16+7; LL mou[Max]; void init() { for(LL i=2; i
              
               >t; while(t--) { scanf("%d",&k); LL left=1,right=INF; while(left<=right) { int middle=(left+right)/2; if(getnum(middle)
               
                

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 2510 符号三角形 NYOJ491 幸.. 下一篇C++迭代器失效的问题 汇总

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: