题目描述

题目背景

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

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

题目描述

区间质数个数

输入输出格式

输入格式:

一行两个整数 询问次数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. 【消灭代办】第5周 - null拷贝,input自适应,进度条加载,颜色随机值

    2018.12.10 代办一:javascript中js怎么拷贝null的值 null属于简单类型的数值,直接进行拷贝即可: 2018.12.11 代办二:怎么让input自适应宽度? 这样是写下代办 ...

  2. python3 小工具

    扫描IP的端口是否开放:Porttest.py # -*- coding: utf-8 -*- import sys import os import socket #扫描 def scanport( ...

  3. vue2中使用 better-scroll

    使用时有三个要点: 一:html部分 <div class="example" ref="divScroll"> <div> <p ...

  4. windows 下安装 mongodb 时间太久,卡在那里不动

    1.mongodb官网下载:http://www.mongodb.org/downloads 2.双击程序安装,会出现如下,卡着不动,时间太久,也取消不了 3.是因为安装时默认勾选 compass 图 ...

  5. Laravel使用Form(转载)

    laravel到了5.1.*以上版本,便没有了illuminate/html类库的支持, 我试着把illuminate/html类库加入了laravel5.2,依然没有用, 但是laravelcoll ...

  6. 为 git设置代理

    普通设置 git config --global http.proxy 'socks5://127.0.0.1:1080'git config --global https.proxy 'socks5 ...

  7. ArcGIS 10.3 AddIN编译旧版本项目问题

    ArcGIS 10.1的AddIN项目,后来ArcGIS版本升级为10.3 AddIN项目想做一些细节调整,结果出生成时没有生成esriaddin文件,ArcMap中AddIn Manager中也没有 ...

  8. Tomcat启动时卡在 INFO HostConfig.deployDirectory Deploy

    今天在服务器上部署网站时 启动tomcat无错 tail -f catalina.out日志 和 catalina.sh run 方式启动时 卡在 22-Jul-2016 23:00:53.921 I ...

  9. 补充:MySQL经典45道题型

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表 ...

  10. 扫二维码登录实现原理,php版

    基础的逻辑图就是这样,但是实际情况还是有几种可能 比如QQ登录,微信登录,微博登录,基本设计都差不多,根据实际情况会有一些差异 问题是,如果设计合理的接口在保证数据的安全性和快速性 设计到的技术不复杂 ...