题目描述

题目背景

题目名称是吸引你点进来的【你怎么知道的】

实际上该题还是很水的【有种不祥的预感。。】

题目描述

区间质数个数

输入输出格式

输入格式:

一行两个整数 询问次数n,范围m接下来n行,每行两个整数 l,r 表示区间。

输出格式:

对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line

输入输出样例

输入样例:

2 5

1 3

2 6

输出样例:

2

Crossing the line

说明

数据范围和约定

对于20%的数据 1<=n<=10 1<=m<=10

对于100%的数据 1<=n<=1000 1<=m<=1000000 -10^9<=l<=r<=10^9 1<=t<=1000000【吓死我了。。】

题目分析

这题是一道相对基础的数论题,就是求区间素数。然而普通的暴力枚举是绝对会超时的,在这里就不给出暴搜代码了(写了好久的优化,连暴搜都不会写了…),那么,如何改进算法呢?这里给出两个优化:线筛素数和前缀和(如果神牛有更好的意见请无视其方法并在下方评论写出最优方案,本蒟蒻需要你们的帮助,飞出垃圾堆…)

百科·线性筛素数

用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。(本方法由欧拉大佬荣誉出品~)

前缀和

先分解为一个小问题:

给定n个数ai以及m个询问。

每次询问一段区间的和。

复杂度O(n+m)。

我们可以这样想:

令s[i]=s[i−1]+a[i]" role="presentation" style="position: relative;">s[i]=s[i−1]+a[i]s[i]=s[i−1]+a[i]。

于是有s[i]=a[1]+a[2]+…+a[i]" role="presentation" style="position: relative;">s[i]=a[1]+a[2]+…+a[i]s[i]=a[1]+a[2]+…+a[i]。

求∑a[i]|(i=l,l+1...,r)" role="presentation" style="position: relative;">∑a[i]|(i=l,l+1...,r)∑a[i]|(i=l,l+1...,r)相当于是s[r]−s[l−1]" role="presentation" style="position: relative;">s[r]−s[l−1]s[r]−s[l−1].

我们可以先用欧拉大佬的线筛素数求出区间1~R的素数个数再减去1~L的素数个数即为答案。嗯….于是…就有了代码。

#include<bits/stdc++.h>
using namespace std;
int n,m,l,r,cont[1000005];
bool isPrime[1000005];
int main()
{
    scanf("%d%d",&n,&m);
    memset(isPrime,0,sizeof(isPrime));
    isPrime[1]=true;
    for(int i=2;i<=sqrt(m);i++)
    {
        if(isPrime[i]==0)
        {
            for(int j=2*i;j<=m;j+=i)
            isPrime[j]=true;
            cont[i]=cont[i-1]+1;
        }
        else cont[i]=cont[i-1];
    }
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&l,&r);
        if(l<1||r>m)
        printf("Crossing the line\n");
        else
        printf("%d\n",cont[r]-cont[l-1]);
    }
}

[Luogu]A%BProblem——线性筛素数与前缀和的更多相关文章

  1. 洛谷P3383 【模板】线性筛素数

    P3383 [模板]线性筛素数 256通过 579提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 Too many or Too few lines 样例解释有问题 ...

  2. 洛谷 P3383 【模板】线性筛素数

    P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...

  3. ACM-ICPC 2018 南京赛区网络预赛 J题Sum(线性筛素数)

    题目链接:https://nanti.jisuanke.com/t/30999 参考自博客:https://kuangbin.github.io/2018/09/01/2018-ACM-ICPC-Na ...

  4. 欧拉函数O(sqrt(n))与欧拉线性筛素数O(n)总结

    欧拉函数: 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. POJ 2407.Relatives-欧拉函数 代码O(sqrt(n)): ll euler(ll n){ ll ans=n; ...

  5. 洛谷 P3383 【模板】线性筛素数-线性筛素数(欧拉筛素数)O(n)基础题贴个板子备忘

    P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...

  6. leetcode 204. Count Primes(线性筛素数)

    Description: Count the number of prime numbers less than a non-negative number, n. 题解:就是线性筛素数的模板题. c ...

  7. [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [SDOI2008]沙拉公主的困惑 线性筛 素数+欧拉 题目大意 给定n,m,求在1到n!内与m!互质的 ...

  8. C++ 线性筛素数

    今天要写一篇亲民的博客了,尽力帮助一下那些不会线性筛素数或者突然忘记线性筛素数的大佬. 众所周知,一个素数的倍数肯定不是素数(废话).所以我们可以找到一个方法,普通的筛法(其实不算筛,普通的是判断一个 ...

  9. 【noi 2.7_413】Calling Extraterrestrial Intelligence Again(算法效率--线性筛素数+二分+测时)

    题意:给3个数M,A,B,求两个质数P,Q.使其满足P*Q<=M且A/B<=P/Q<=1,并使P*Q最大.输入若干行以0,0,0结尾. 解法:先线性筛出素数表,再枚举出P,二分出对应 ...

随机推荐

  1. The client and server cannot communicate, because they do not possess a common algorithm

    The client and server cannot communicate, because they do not possess a common algorithm This was re ...

  2. css如何实现一个元素高度固定宽度按比例显示?

    用padding-top百分比可以实现宽度固定高度按比例展示,现在的需求是对一个video视频的盒子div高度是固定的,宽度如何按比例展示? 解决后效果如图: 红框标注的即是我在上面高度比例固定的范围 ...

  3. 【AI】神经网络基本词汇

    neural networks 神经网络activation function 激活函数hyperbolic tangent 双曲正切函数bias units 偏置项activation 激活值for ...

  4. cdh 安装调研

    解决:No module named site http://blog.csdn.net/amgang/article/details/7030642 因为安装greenplum导致yum报如下错误: ...

  5. centos 安装python PIL模块

    转载:https://www.cnblogs.com/ccdc/p/4069112.html 1.安装 使用yum安装缺少类库: #尤其重要,否则会报错 yum install python-deve ...

  6. PHP函数之dirname()

    1. 定义和用法 dirname()函数返回路径中的目录部分.即返回去掉文件名后的目录名. 2. 参数 dirname(path): 参数 path是一个包含有指向一个文件的全路径的字符串. 3. 举 ...

  7. elk-logstash-kibana(三)

    一.修改logstash.yml unzip logstash-6.3.2 vim config/logstash.yml #添加:检查所有ip http.host: "0.0.0.0&qu ...

  8. 前端 jquery获取当前页面的URL信息

    以前在做网站的时候,经常会遇到当前页的分类高亮显示,以便让用户了解当前处于哪个页面.之前一直是在每个不同页面写方法.工程量大,也不便于修改.一直在想有什么简便的方法实现.后来在网上查到可以用获取当前U ...

  9. GitHub 设置首页显示 404 There isn't a GitHub Pages site here.

    问题如题! 能使用的必要条件是: 1.创建的仓库 Code 中 必须 有 README.md 文件,内容自定 2.设置模板在仓库中 Settings -->GitHub Pages --> ...

  10. particles.js中文开发手册

    2017年6月17日01:06:28 因为自己需要做产品,所以一个好的UI界面也是很重要的,发现这种散射的原子颗粒特效还不错,就弄了一个 官方github:https://github.com/Vin ...