BZOJ-2440: [中山市选2011]完全平方数(二分+莫比

作者: AmadeusChan | 来源:发表于2019-03-15 09:47 被阅读0次

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2440

首先直接求不好求,考虑二分,那么就是求[1..mid]里符合条件的数有几个,首先可以很简单的想到容斥,不过略麻烦,所以可以直接用莫比乌斯函数求掉。

代码:

#include <cstdio>

#include <algorithm>

#include <cstring>

#include <cmath>

 

using namespace std ;

 

typedef long long ll ;

 

const ll maxn = 100000 ;

 

bool f[ maxn + 10 ] ;

ll u[ maxn + 10 ] ;

 

inline void Init(  ) {

        memset( f , true , sizeof( f ) ) ;

        f[ 1 ] = false , u[ 1 ] = 1 ;

        for ( ll i = 2 ; i <= maxn ; ++ i ) if ( f[ i ] ) {

                u[ i ] = -1 ;

                for ( ll j = i << 1 ; j <= maxn ; j += i ) {

                        f[ j ] = false ;

                        if ( ( j / i ) % i ) u[ j ] = - u[ j / i ] ; else u[ j ] = 0 ;

                }

        }

}

 

inline ll cal( ll n ) {

        ll ret = ll( sqrt( n ) ) ;

        ll rec = 0 ;

        for ( ll i = 1 ; i <= ret ; ++ i ) rec += ll( u[ i ] * n / ( i * i ) ) ;

        return rec ;

}

 

inline ll solve( ll k ) {

        ll l = 0 , r = k << 2 , mid ;

        while ( r - l > 1 ) {

                mid = ( l + r ) >> 1 ;

                if ( cal( mid ) < ll( k ) ) l = mid ; else r = mid ;

        }

        return r ;

}

 

int main(  ) {

        Init(  ) ;

        ll T ; scanf( "%lld" , &T ) ;

        while ( T -- ) {

                ll k ; scanf( "%lld" , &k ) ;

                printf( "%lld\n" , solve( k ) ) ;

        }

        return 0 ;

}

相关文章

  • BZOJ-2440: [中山市选2011]完全平方数(二分+莫比

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2440 首...

  • 完全平方数

    题目描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需...

  • 完全平方数

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perf...

  • 5-14完全平方数

    完全平方数就是: 两个相同的数相乘的数。 完全平方数的表示 A是完全平方数,通常用a的平方来表示。在学习了字母代替...

  • 判断完全平方数

    就是判断一个数字能不能被开平方, 比如9的开平方是3 是对的。 5没法开平方就是错的。 原理就是,开平方后判断是否...

  • 279. 完全平方数

    题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需...

  • 279. 完全平方数

    279. 完全平方数 1.思路 1.1动态规划: 这个题很容易就想到了动态规划.每次F[n]=min{F[i]+F...

  • 279. 完全平方数

    思路:才用广度优先搜索每次把 减去平方数的差值 和 搜索深度 入队遍历,第一次找到差值0时,对应的搜索深度即所求。...

  • 279. 完全平方数

    好久没有刷题了,还是要坚持和继续的,刷题是我快乐! 这个的思路就是一层一层的进行,在第一层用所有小于n的平方数去被...

  • leetcode-完全平方数

    这道题看着简单,但是自己没啥思路。 有三种方法 法一:动态规划,状态转移方程式 dp[i] = min(dp[i]...

网友评论

    本文标题:BZOJ-2440: [中山市选2011]完全平方数(二分+莫比

    本文链接:https://www.haomeiwen.com/subject/pjnkmqtx.html