zoukankan      html  css  js  c++  java
  • 【BZOJ 2986】 莫比乌斯函数+容斥原理

    2986: Non-Squarefree Numbers

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 337  Solved: 156

    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

    HINT

    Source

    【分析】

      跟这题一模一样->传送门

      【第一次二分打错。。

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 using namespace std;
     7 #define Maxm 1000010
     8 #define LL long long
     9 
    10 LL pri[Maxm],pl,mu[Maxm];
    11 bool vis[Maxm];
    12 void init()
    13 {
    14     for(LL i=2;i<=Maxm-10;i++)
    15     {
    16         if(!vis[i]) pri[++pl]=i,mu[i]=-1;
    17         for(LL j=1;j<=pl;j++)
    18         {
    19             if(pri[j]*i>Maxm-10) break;
    20             vis[pri[j]*i]=1;
    21             if(i%pri[j]==0) mu[pri[j]*i]=0;
    22             else mu[i*pri[j]]=-mu[i];
    23             if(i%pri[j]==0) break;
    24         }
    25     }
    26 }
    27 
    28 LL n;
    29 bool check(LL x)
    30 {
    31     LL ans=0;
    32     for(LL i=2;i*i<=x;i++)
    33     {
    34         ans+=x/(i*i)*(-mu[i]);
    35     }
    36     return ans>=n;
    37 }
    38 
    39 int main()
    40 {
    41     init();
    42     scanf("%lld",&n);
    43     LL l=0,r=30000000000LL;
    44     while(l<r)
    45     {
    46         LL mid=(l+r)>>1;
    47         if(check(mid)) r=mid;
    48         else l=mid+1;
    49     }
    50     printf("%lld
    ",l);
    51     return 0;
    52 }
    View Code

    2017-04-20 20:20:29

  • 相关阅读:
    iphone那些事儿
    【转】我面试过最出色的项目主管,入职半年就离职了。
    net::ERR_ABORTED 404 (Not Found)
    四大名著
    测试心理状态
    typescript那些事儿
    flexbox父盒子flex-direction属性
    flexbox父盒子align-content属性
    flexbox父盒子flex-wrap属性
    flexbox父盒子align-items属性
  • 原文地址:https://www.cnblogs.com/Konjakmoyu/p/6740616.html
Copyright © 2011-2022 走看看