数(aqnum)
数(aqnum)
3.1 题目描述
秋锅对数论很感兴趣,他特别喜欢一种数字。秋锅把这种数字命名为 农数 ,英文名为 AQ number 。
这种数字定义如下:
定义 1 一个数 n 是农数,当且仅当对于每个质数 p ,要么 p ∤ n ,要么 p ≤ MAXPRIME
且存在一个 正奇数 k 使得 p k | n 且 p k+1 ∤ n 。
秋锅想知道,给定 N,MAXPRIME ,问 1 到 N 里面的农数有多少个呢?
3.2 输入格式
一行 2 个数,
分别为 N 和 MAXPRIME 。
3.3 输出格式
一行一个数,表示 1 到 N 中农数的个数。
3.4 样例输入
10 3
3.5 样例输出
5
3.6数据范围
对于 30% 的数据:N ≤ 1000
对于 60% 的数据:N ≤ 5 × 10^6
对于 100% 的数据:N ≤ 10^10 ,MAXPRIME ≤ 10^6
题解:
搜索。怎么能想到它是搜索呐?
农数的因数满足小于等于maxprime,且指数为奇数,处理出小于等于maxprime的质数,枚举指数的情况,加一个剪枝,如果当前数*pri[i]^2>limit,停止搜索,二分一个最大的乘以当前数<=limi的质因子,答案加上这些质子,注意数据范围(最近总是忽略数据范围)。
写的时候,一直把upper_bound写成了lower_bound,傻傻分不清。
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int pri[1000010];
long long sum=0,lim,ma,p;
bool o[1000010];
long long read()
{
long long ans=0,fu=1;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') fu=-1;ch=getchar();}
while(isdigit(ch)) {ans=ans*10+ch-'0';ch=getchar();}
return ans*fu;
}
void prime(int x)
{
p=0;
o[1]=1;
for(int i=2;i<=x;i++)
{
if(!o[i])
pri[++p]=i;
for(int j=1;j<=p&&pri[j]*i<=x;j++)
{
o[pri[j]*i]=1;
if(i%pri[j]==0)
break;
}
}
}
void search(long long x,int th) //x要开long long哦
{
if(th==p+1)
{
sum++;
return;
}
if(x*pri[th]>lim)
{
sum++;
return;
}
if(x*pri[th]*pri[th]>lim)
{
int pos=upper_bound(pri+1,pri+p+1,lim/x)-pri;
sum+=pos-th+1;
if(sum<0)
{
int debug=1;
}
return;
}
search(x,th+1);
for(int i=0;;i++)
{
if(x>lim)
return;
if(i&1)
search(x,th+1);
x*=pri[th];
}
}
int main()
{
freopen("aqnum.in","r",stdin);
freopen("aqnum.out","w",stdout);
lim=read(),ma=read();
prime(ma);
search((long long)1,1);
printf("%lld",sum);
return 0;
}
数(aqnum)的更多相关文章
- Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- 数塔问题(DP算法)自底向上计算最大值
Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数 ...
- 统计iOS项目的总代码行数的方法
打开终端, 用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or - ...
- 数百个 HTML5 例子学习 HT 图形组件 – 3D建模篇
http://www.hightopo.com/demo/pipeline/index.html <数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇>里提到 HT 很 ...
- 数百个 HTML5 例子学习 HT 图形组件 – 3D 建模篇
http://www.hightopo.com/demo/pipeline/index.html <数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇>里提到 HT 很 ...
- 数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇
<数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇>一文让读者了解了 HT的 2D 拓扑图组件使用,本文将对 HT 的 3D 功能做个综合性的介绍,以便初学者可快速上手使用 HT ...
- 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇
HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打 ...
- android手机旋转屏幕时让GridView的列数与列宽度自适应
无意中打开了一年前做过的一个android应用的代码,看到里面实现的一个小功能点(如题),现写篇文章做个笔记.当时面临的问题是,在旋转屏幕的时候需要让gridview的列数与宽度能自适应屏幕宽度,每个 ...
随机推荐
- Hibernate_条件查询客户列表
分析:通过名称查询 实现: 1.在list.jsp中修改 2.修改ListCustomerServlet 首先获取cust_name,增加条件:若不为空,则模糊搜索,再调用Service方法,结果放到 ...
- Vue--由自动获取焦点引出的DOM、mounted、自定义指令
一.自动获取焦点的DOM实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Redis 源码学习之 Redis 事务Nosql
Redis事务提供了一种将多个命令请求打包,然后一次性.按照顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而去执行其他不在事务中的命令请求,它会把事务中所有的命令都执行完毕才会去执 ...
- 【机器学习PAI实战】—— 玩转人工智能之你最喜欢哪个男生?
摘要: 分类问题是生活中最常遇到的问题之一.普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题.我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小.充足的样本,合适 ...
- spark-ML之朴素贝叶斯
训练语料格式 自定义五个类别及其标签:0 运费.1 寄件.2 人工.3 改单.4 催单.5 其他业务类. 从原数据中挑选一部分作为训练语料和测试语料 建立模型测试并保存 import org.apa ...
- U盘安装win7 raid设置
需要先安装驱动! 大白菜U盘安装界面有一个选择驱动的选项,选择驱动即可.Intel_ESRT2_Windows_signed_DRV_v16.03.2014.1127
- 网络流24题 骑士共存(DCOJ8023)
题目描述 在一个 n*n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入. 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以 ...
- Oracle函数——MINUS
解释 “minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的,只不过它不是传统意义上对数字的减法,而是对查询结果集的减法.A minus B就意味着将结果集A去除结果集B中所 ...
- poj1087&&hdu1526 最大流
多源多汇. 比较明显的建图.对于电器,可以从源点与各个电器相连,容量为1,表示这个电器有1个,然后对于各种接头,那可以各个接头与汇点相连,容量为1,表示每个接头只能用一次. 然后对于能够相互转换的接头 ...
- 使用 Markdown Flow 画流程图
使用 Markdown Flow 画流程图 好处是可以方便的使用 Git 管理版本 st=>start: 开始 e=>end: 结束 c1=>condition: A c2=> ...