bzoj 2440
题意:有一个从小到大的由不包含平方约数的数组成的数列,从1开始,求第k项。
“满足某种限制的数的第k个”+二分答案="前n个数有多少个数满足限制“
求[1,n]中有多少个数没有平方约数,我们考虑求满足要求的数的补集。
求[1,n]中有多少个数有平方约数,我们考虑枚举约数后用容斥解决。
设Ai为包含[1,n]中所有为pi*pi的倍数的数的集合,因为一个数存在平方约数当且仅当它是某个(可能不止一个)质数的平方的倍数,所有转换后的问题的答案是(假如1~sqrt(n)只有3个质数):
|A1 U A2 U A3 ... | = |A1|+|A2|+|A3|-|A1 and A2|-|A1 and A3|-|A2 and A3|+|A1 and A2 and A3|
我们发现是奇数个质数的积的倍数前面的符号都是-1,偶数个则是1,这正好符合Mobius函数的定义,于是我们可以枚举所有不包含平方因子的数i,然后floor(n/(i*i))为是它的倍数的数的个数,而它们前面的符号为mobius[i]。
/**************************************************************
Problem: 2440
User: idy002
Language: C++
Result: Accepted
Time:1232 ms
Memory:1232 kb
****************************************************************/ #include <cstdio>
#include <cmath> int prm[], isnot[], mu[], ptot; void init() {
mu[] = ;
for( int i=; i<=; i++ ) {
if( !isnot[i] ) {
prm[++ptot]=i;
mu[i] = -;
}
for( int j=; j<=ptot && prm[j]*i<=; j++ ) {
isnot[i*prm[j]]=true;
if( i%prm[j]== ) {
mu[i*prm[j]]=;
break;
}
mu[i*prm[j]]=-mu[i];
}
}
}
int calc( int n ) {
int rt = ;
int maxi = (int)ceil(sqrt(n));
for( int i=; i<=maxi; i++ )
rt += mu[i]*(n/(i*i));
return rt;
}
int nth( int k ) {
int lf=, rg=;
while( lf<rg ) {
int mid=lf+((rg-lf)>>);
int cnt=calc(mid);
if( cnt<k ) lf=mid+;
else rg=mid;
}
return lf;
} int main() {
int T;
init();
scanf( "%d", &T );
while( T-- ) {
int k;
scanf( "%d", &k );
printf( "%d\n", nth(k) );
}
}
bzoj 2440的更多相关文章
- [BZOJ 2440] [中山市选2011] 完全平方数 【二分 + 莫比乌斯函数】
题目链接:BZOJ - 2440 题目分析 首先,通过打表之类的方法可以知道,答案不会超过 2 * k . 那么我们使用二分,对于一个二分的值 x ,求出 [1, x] 之间的可以送出的数有多少个. ...
- bzoj 2440 (莫比乌斯函数)
bzoj 2440 完全平方数 题意:找出第k个不是完全平方数的正整数倍的数. 例如 4 9 16 25 36什么的 通过容斥原理,我们减去所有完全数 4有n/4个,但是36这种会被重复减去, ...
- BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数
BZOJ 2440 [中山市选2011]完全平方数 | 莫比乌斯函数 题面 找出第k个不是平方数的倍数的数(1不是平方数, \(k \le 10^9\)). 题解 首先二分答案,问题就转化成了求\([ ...
- BZOJ 2440 [中山市选2011]完全平方数 (二分 + 莫比乌斯函数)
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4805 Solved: 2325[Submit][Sta ...
- BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3028 Solved: 1460[Submit][Sta ...
- BZOJ 2440 完全平方数(莫比乌斯-容斥原理)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2440 题意:给定K.求不是完全平方数(这里1不算完全平方数)的倍数的数字组成的数字集合S ...
- BZOJ 2440 完全平方数(莫比乌斯反演,容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=2440 题意:求第K个没有平方因子的数 思路:首先,可以二分数字,然后问题就转变成x以内有多少无平方因 ...
- BZOJ 2440: [中山市选2011]完全平方数( 二分答案 + 容斥原理 + 莫比乌斯函数 )
先二分答案m,<=m的有m-∑(m/pi*pi)+∑(m/pi*pi*pj*pj)-……个符合题意的(容斥原理), 容斥系数就是莫比乌斯函数μ(预处理)... ----------------- ...
- BZOJ 2440 完全平方数
2440: [中山市选2011]完全平方数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 966 Solved: 457 [Submit][Sta ...
- BZOJ 2440 完全平方数 莫比乌斯反演模板题
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2440 题目大意: 求第k个无平方因子的数 思路: 二分答案x,求1-x中有多少个平方因 ...
随机推荐
- three.js为何如此奇妙
WebGL是在浏览器中实现三维效果的一套规范,而最初使用WebGL原生的API来写3D程序是一件非常痛苦的事情,在辛苦的付出下WebGL开源框架出现了,其中three.js就是非常优秀的一个,它掩盖了 ...
- Tensorflow常用函数说明(一)
首先最开始应该清楚一个知识,最外面的那个[ [ [ ]]]括号代表第一维,对应维度数字0,第二个对应1,多维时最后一个对应数字-1:因为后面有用到 1 矩阵变换 tf.shape(Tensor) 返回 ...
- 贪心算法_01背包问题_Java实现
原文地址:http://blog.csdn.net/ljmingcom304/article/details/50310789 本文出自:[梁敬明的博客] 1.贪心算法 什么是贪心算法?是指在对问题进 ...
- 5.Longest Palindromic Substring---dp
题目链接:https://leetcode.com/problems/longest-palindromic-substring/description/ 题目大意:找出最长回文子字符串(连续). 法 ...
- 利用json模块解析dict报错找不到attribute 'dumps'[python2.7]
[背景] 环境: RHEL 7.3 版本: python2.7 [错误情况] 写了一个简单的python脚本 将dict转换为json 脚本如下: #!/usr/bin/python #-*- cod ...
- Zabbix定义报警机制
1. 修改zabbix配置文件 #取消注释或添加一行 cat -n /etc/zabbix/zabbix_server.conf |grep --color=auto "AlertScrip ...
- poj 2828(线段树单点更新)
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 18561 Accepted: 9209 Desc ...
- html5多媒体Video/Audio
video: 1.常见的视频格式 视频的组成部分:画面.音频.编码格式 视频编码:H.264.theora.VP8(google开源) 2.常见的音频格式 编码:AAC.MP3 ...
- Cookie/Session的认识
Cookie 1.cookie是什么? cookie是一小段文本,伴随着用户请求和页面在web服务器和浏览器之间传递,cookie包含每次用户访问站点时,web应用程序都可以读取的信息 2.为什么需要 ...
- Codeigniter的一些优秀实践
最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路.用在公众的项目,最好还是按框架规范来,所以还是总结一下,免得以后别人再 ...