• BZOJ2440:[中山市选2011]完全平方数(莫比乌斯函数)


    Description

    小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。
    这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了小X。小X很开心地收下了。
    然而现在小 W 却记不起送给小X的是哪个数了。你能帮他一下吗?

    Input

    包含多组测试数据。文件第一行有一个整数 T,表示测试数据的组数。
    第2 至第T+1 行每行有一个整数Ki,描述一组数据,含义如题目中所描述。 

    Output

    含T 行,分别对每组数据作出回答。第 i 行输出相应的第Ki 个不是完全平方数的正整数倍的数。

    Sample Input

    4
    1
    13
    100
    1234567

    Sample Output

    1
    19
    163
    2030745

    HINT

    对于 100%的数据有 1 ≤ Ki ≤ 10^9,T ≤ 50

    Solution

    PO姐讲的已经很明白了我为什么还要费劲写公式啊

    Code

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #define LL long long
     5 #define N (100000+1000)
     6 using namespace std;
     7 
     8 LL T,x,k,vis[N],prime[N],mu[N],cnt;
     9 
    10 void Get_mu()
    11 {
    12     mu[1]=1;
    13     for (int i=2; i<=100000; ++i)
    14     {
    15         if (!vis[i]){prime[++cnt]=i; mu[i]=-1;}
    16         for (int j=1; j<=cnt && prime[j]*i<=100000; ++j)
    17         {
    18             vis[prime[j]*i]=true;
    19             if (i%prime[j]==0) break;
    20             mu[prime[j]*i]=-mu[i];
    21         }
    22     }
    23 }
    24 
    25 LL check(LL x)
    26 {
    27     LL ans=0;
    28     for (LL i=1; i<=sqrt(x); ++i)
    29         ans+=x/(i*i)*mu[i];
    30     return ans;
    31 }
    32 
    33 int main()
    34 {
    35     scanf("%lld",&T);
    36     Get_mu();
    37     while (T--)
    38     {
    39         scanf("%lld",&k);
    40         LL l=x,r=1e10,mid,now,ans;
    41         while (l<=r)
    42         {
    43             mid=(l+r)>>1; now=check(mid);
    44             if (now>=k) ans=mid,r=mid-1;
    45             else l=mid+1;
    46         }
    47         printf("%lld
    ",ans);
    48     }
    49 }
  • 相关阅读:
    mac安装sublime text 3,含注册码
    shell脚本--cut命令与awk简单使用
    mac安装VMware虚拟机(含序列号)及Ubuntu系统
    伪静态与重定向--RewriteBase
    伪静态与重定向--RewriteRule
    伪静态与重定向之初体验
    shell脚本--内容查找之grep命令
    shell脚本--文件查找之find命令
    JQuery基础-- Ajax
    安装phpredis扩展
  • 原文地址:https://www.cnblogs.com/refun/p/9556630.html
Copyright © 2020-2023  润新知