zoukankan      html  css  js  c++  java
  • BZOJ 2440 完全平方数

    2440: [中山市选2011]完全平方数

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 966  Solved: 457
    [Submit][Status]

    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

     

    Source

    ——分割线——

    好吧,这道题是一个裸的莫比乌斯反演,好吧,在做这题之前我只是知道它,完全不晓得这么神奇!莫比乌斯函数的定义是如果I质因数分解中有任意一个大于1的指数就为0,否则为-1。这样,由这道题的题目和容斥原理,平方数就要加上有奇数个质数平方因子的数,在减去偶数个质数的平方的个数,就是平方数的个数!

    具体代码嘛:

    /*Author:WNJXYK*/
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cmath> 
    using namespace std;
    
    #define LL long long
    
    const int Maxn=100000;
    LL miu[Maxn+10];
    
    inline void getMiu(){
    	for (int i=1;i<=Maxn;i++){
    		LL target=i==1?1:0;
    		LL delta=target-miu[i];
    		miu[i]=delta;
    		for(int j=i+i;j<=Maxn;j+=i){
    			miu[j]+=delta;
    		}
    	}
    } 
    
    inline LL check(LL n){
    	LL sn=sqrt(n);
    	LL Ans=0;
    	for(int i=1;i<=sn;i++){
    		Ans+=miu[i]*(n/(i*i));
    	}
    	return Ans;
    }
    
    inline LL getAns(LL k){
    	LL left=1,right=k*2+1,mid;
    	while(left+1<right){
    		mid=(left+right)/2;
    		if (check(mid)<k){
    			left=mid;
    		}else{
    			right=mid;
    		}
    	}
    	return right;
    }
    
    
    int T;
    int main(){
    	getMiu();
    	scanf("%d",&T);
    	for(int i=1;i<=T;i++){
    		LL k;
    		scanf("%lld",&k);
    		printf("%lld
    ",getAns(k));
    	}
    	return 0;
    }
    



  • 相关阅读:
    VUE中实现iview的图标效果时遇到的一个问题
    VUE中获取url中的值
    VUE的生命周期
    基于Vue的省市区三级联动插件
    父子组件通讯(2)
    vue中声明式导航和编程式导航
    java Calendar(日历)
    java Date
    java equals
    java 内部类
  • 原文地址:https://www.cnblogs.com/WNJXYK/p/4063935.html
Copyright © 2011-2022 走看看