【BZOJ2440】[中山市选2011]完全平方数

2023-11-07 18:58

本文主要是介绍【BZOJ2440】[中山市选2011]完全平方数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题解:
显然可以二分, O(logn) 的代价二分答案,问题转换为 [1, x] 中有多少个无平方因子数
由容斥原理,[1, x] 中无平方因子数等于:
• 0 个质数乘积的平方的倍数个数
• - 1 个质数乘积的平方的倍数个数
• + 2 个质数乘积的平方的倍数的个数
• ……
枚举 [1,sqrt(x)] 范围内的数,把 μ(i)x/i2 加入答案

//by sdfzchy
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int inf=(1<<30),N=100010;
int n,m;
inline int in()
{char ch=getchar();int f=1,tmp=0;while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') {tmp=(tmp<<1)+(tmp<<3)+(ch-'0');ch=getchar();}return tmp*f;
}int miu[N],pri[N],pcnt;
bool ok[N];
void init()
{miu[1]=1;for(int i=2;i<=N;i++){if(!ok[i]) pri[++pcnt]=i,miu[i]=-1;for(int j=1;j<=pcnt&&(LL)i*pri[j]<=N;j++){ok[i*pri[j]]=1;if(i%pri[j]==0){miu[i*pri[j]]=0;break;}miu[i*pri[j]]=-miu[i];}}
}int calc(int x)
{int k=sqrt(x),ans=0;for(int i=1;i<=k;i++) ans+=miu[i]*x/(i*i);return ans;
}void solve()
{int x=in(),l=1,r=2*x+1,ans=1;while(l<=r){int mid=((LL)l+r)>>1;int cur=calc(mid);if(cur<x) l=mid+1;else r=mid-1,ans=mid;}printf("%d\n",ans);
}int main()
{init();int T=in();while(T--) solve();return 0;
}

这篇关于【BZOJ2440】[中山市选2011]完全平方数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365627

相关文章

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

uva674(完全背包)

题意: 有5种硬币1,5,10,25,50,;现在随意的给出一个价钱,问你有几种组合方式! 输入11 输出4 1+...+1(10个),5+(6*1),5+5+1,  10+1(共4种) 思路; 满足完全背包思想,状态转移方程:dp[i+num[k]] += dp[i](dp[i]为组合成i的不重复种数,num[k]分别为1,5,10,25,50)不能合在一起转移,否则会导致重复!

222.完全二叉树的节点个数

(写给未来遗忘的自己) 题目: 代码: class Solution {public:int countNodes(TreeNode* root) {queue<TreeNode*>node_que;if(root==nullptr) return 0;node_que.push(root);int result;while(!node_que.empty()){int layer_s

不完全微分PID控制算法

不完全微分PID控制算法 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 在PID控制中,微分信号的引入可改善系统的动态特性,但也容易引起高频干扰,在误差扰动突变时尤其显出微分项的不足。若在控制算法中加入低通滤波器,则可以使系统性能得到改善。 克服上述缺点的方法之一是在PID算法中加入一个一阶惯性环节(低通滤波器) G f

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件         本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用requests库发送HTTP请求使用lxml库解析HTML文档使用dateti

JVM源码分析之SystemGC完全解读

概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下System.gc的原理 或许大家已经知道如下相关的知识 system.gc其实是做一次full gcsystem.gc会暂停整个进程syste

最强MoE完全开源模型发布啦~

这篇文章介绍了OLMOE(Open Mixture-of-Experts Language Models)系列模型,这是一款开源的稀疏混合专家模型。OLMOE-1B-7B拥有70亿参数,但每个输入令牌仅使用10亿参数。该模型在5万亿令牌上进行预训练,并进一步适应以创建OLMOE-1B-7B-INSTRUCT。这些模型在相似活跃参数的模型中表现最佳,甚至超越了更大的模型,如Llama2-13B-