[solution] JZOJ-5458 质数
[solution] JZOJ-5458 质数
题面
Description
小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感。小X 认为,质数是一切自然数起源的地方。
在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数字。
但由于小X 对质数的热爱超乎寻常,所以小X 同样喜欢那些虽然不是质数,但却是由两个质数相乘得来的数。
于是,我们定义,一个数是小X 喜欢的数,当且仅当其是一个质数,或是两个质数的乘积。
而现在,小X 想要知道,在L 到R 之间,有多少数是他喜欢的数呢?
Input
第一行输入一个正整数Q,表示询问的组数。
接下来$Q$ 行。包含两个正整数L 和R。保证L≤R。
Output
输出Q 行,每行一个整数,表示小X 喜欢的数的个数。
Sample Input
输入1:
1
1 6
输入2:
10
282 491
31 178
645 856
227 367
267 487
474 697
219 468
582 792
315 612
249 307
输入3:
10
20513 96703
15236 86198
23185 78205
40687 48854
42390 95450
63915 76000
36793 92543
35347 53901
44188 76922
82177 90900
Sample Output
输出1:
5
样例1解释:
6以内的质数有2,3,5,而4=2*2,6=2*3。因此2,3,4,5,6都是小X 喜欢的数,而1 不是。
输出2:
97
78
92
65
102
98
114
90
133
29
输出3:
24413
23001
17784
2669
16785
3833
17712
6028
10442
2734
Data Constraint

分割线
是不是很简单??似曾相识的赶脚??是不是一下子切掉了??
对的这就是一个很水的题目,本蒟蒻的给出了一个暴力的做法:
就像以下这样
Step1:暴力筛出1-10000000里的所有质数
Step2:暴力筛出1-10000000里的由2个质数相乘得到的数
Step3:对筛出来的数赋值为1,其他为0,暴力搞前缀和
Step4:O(1)时间回答询问即可
对就是这么暴力,预处理消耗633ms,回答100000次询问总共才消耗大约70ms
暴力解法的代码见下(捂脸)
Code
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#define ll long long
#define lb(x) (x&-x)
using namespace std;
ll p[10000005];
ll q[10000005];
ll c[10000005];
void up(ll x,ll num){for(ll i=x;i<=10000000;i+=lb(i)) c[i]+=num;}
ll gs(ll x){ll ans=0;for(ll i=x;i;i-=lb(i)) ans+=c[i];return ans;}
ll ask(ll l,ll r){return gs(r)-gs(l-1);}
int main(){
freopen("prime.in","r",stdin);
freopen("prime.out","w",stdout);
memset(p,0,sizeof(p));
memset(q,0,sizeof(q));
ll tot=0;
for(ll i=2;i<=10000000;i++){
if(!p[i]){
q[tot]=i;up(i,1);
for(ll j=0;j<=tot;j++){
ll ppp=q[j]*q[tot];
if(ppp<=10000000)
up(ppp,1);
else
break;
}
tot++;
for(ll j=2;i*j<=10000000;j++){
p[i*j]=1;
}
}
}ll cnt=0;
ll q;
scanf("%lld",&q);
while(q--){
ll a,b;
if(a<1) a=1;
if(b>10000000) b=10000000;
scanf("%lld %lld",&a,&b);
printf("%lld\n",ask(a,b));
}return 0;
}
[solution] JZOJ-5458 质数的更多相关文章
- [solution] JZOJ 5459. 密室
[solution] JZOJ 5459. 密室 Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有$N$ 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的 ...
- JZOJ 4725. 质数序列
Description 由于去NOI的火车“堵”了数不清时间,小Z和小D打完ETG,闲着无聊开始看今年的JSOI省选题,并尝试着修改题目:对于一个长度为L ≥ 2的序列,X:x1,x2,...,xL ...
- YBT 6 数学基础
$补+写题ing$ 第 1 章 快速幂 序列的第 k 个数 link $solution:$ 板子 A 的 B 次方 link $solution:$ 板子 [NOIP2013] 转圈游戏 link ...
- 5458. 【NOIP2017提高A组冲刺11.7】质数
5458. [NOIP2017提高A组冲刺11.7]质数 (File IO): input:prime.in output:prime.out Time Limits: 1000 ms Memory ...
- [jzoj 4668] [NOIP2016提高A组模拟7.19] 腐败 解题报告(质数分类+慢速乘)
题目链接: http://172.16.0.132/senior/#main/show/4668 题目: 题解: 考虑把A数组里的每个元素分解质因数,对于每个质因数开一个vector存一下包含这个质因 ...
- [LeetCode] Count Primes 质数的个数
Description: Count the number of prime numbers less than a non-negative number, n click to show more ...
- LeetCode 204. Count Primes (质数的个数)
Description: Count the number of prime numbers less than a non-negative number, n. 题目标签:Hash Table 题 ...
- [LeetCode] Prime Number of Set Bits in Binary Representation 二进制表示中的非零位个数为质数
Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime ...
- [jzoj]3506.【NOIP2013模拟11.4A组】善良的精灵(fairy)(深度优先生成树)
Link https://jzoj.net/senior/#main/show/3506 Description 从前有一个善良的精灵. 一天,一个年轻人B找到她并请他预言他的未来.这个精灵透过他的水 ...
随机推荐
- rabbitmq (一)用法
首先,主机一是window系统,虚拟机二 ubuntu, ubuntu部署了rabbitmq服务端.默认监听5672端口. 由于rabbitmq内部有严格的权限系统,使用之前必须配置好权限. 默认网页 ...
- centos7在vmware上安装后不能连接网络的问题。注意虚拟机向导时选择的操作系统...........
在虚拟机上安装时发现网络不可用 在网上查找解决方案一整理天,各种命令代码偿试 无效. 在贴上发现说 Centos7镜像是64位 ,虚拟机操作系统一定要选择centos64位也是必须的. 最后选择重 ...
- Shell脚本21-40例
21.统计数字并求和 计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字.例如a.txt内容如下:12aa*lkjskdjalskdflkskdjflkjj 我们脚本 ...
- leetcode31
class Solution { public: void nextPermutation(vector<int>&nums) { int len = nums.size(); , ...
- leetcode221
int maximalSquare(vector<vector<char>>& matrix) { int height=matrix.size(); ) ; ].si ...
- .NET MVC 控制器和行为
行为就是可访问方法(public) 行为返回类型必须是 ActionResult 或者其派生类,基本上返回类型为以下四种之一 View(视图路径) Json(对象或者对象集合) Content(字符串 ...
- python练习题_01
1.执行python的两种方式 答:1.通过解释器执行1.py 2.通过cmd执行python,再执行1.py 2.简述位与字节的的关系 答:8位=1字节(计算机处理时以字节为单位,存储时以位为单位) ...
- 第二篇*1、Python基本数据类型
数据类型: 变量可以处理不同类型的值,基本的类型是数和字符串.使用变量时只需要给它们赋一个值.不需要声明或定义数据类型.Python3 中有六个标准的数据类型:Number(数字),String(字符 ...
- hitTest,UIWindow sendEvent ,touchbegan, 响应链
https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/using_responders_and_th ...
- 安装zabbix3.4 centos7
服务端 192.168.70.133 客户端 192.168.70.134 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc ...