(一道很水的题)

(反正我第一眼看的时候也是这么想的)

题目背景

题目名称是吸引你点进来的

实际上该题还是很水的

题目描述

区间质数个数

输入输出格式

输入格式:

一行两个整数 询问次数n,范围m

接下来n行,每行两个整数 l,r 表示区间

输出格式:

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

输入输出样例

输入样例#1: 复制

2 5
1 3
2 6
输出样例#1: 复制

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

-----------------------------------------------------------------------------------------------------------------

第一眼一看的时候

特别开心

这不就是求素数嘛!

看了一眼数据范围

还可以

用线性的欧拉筛应该可以

于是上手就写

(我才不会说我写了两遍,第二边上的时候思路才定下来)

好不容易写完了

结果输入数不进去

a[++l]写成了a[l++]

于是进入了死循环

好不容易过了样例

一提交t了5个点

啊哈??

不是线性的吗??(顿时懵逼)

于是看题解了(千万千万不要这样,动不动就看题解,真的是很不好的习惯)

题解居然是埃氏筛

啊哈??
再一看代码果然

先放一个我错误的代码!!!!!

以此为耻

#include<cstdio>
using namespace std;
long long n,m,a[],b[],c[],ans,len; //a存每个区间的素数个数,b存素数
long long l,r; inline long long read()
{
long long ans = ;
int p = ;
char ch = getchar();
while(ch < '' || ch > '')
{
if(ch == '-')
p = -;
ch = getchar();
}
while(ch >= ''&&ch <='')
{
(ans *= )+= ch-'';
ch = getchar();
}
return ans * p;
} int main()
{
a[] = ;
a[] = ;
b[] = ;
c[] = ;//0为不是
c[] = ;// 1为是
len = ;
n = read();
m = read(); for(long long i=;i<=m;i++)//遍历每个数
for(long long j=;j<=len;j++)//看他能不能被素数整除
{
if(i % b[j]== ) //被素数整除
{
a[i]=a[i-];
break;
}
else
if(j == len)//全用素数除过了
{
c[i] = ;
a[i] = a[i - ] + ;
b[++len] = i;
break;
}
} for(long long i = ;i <= n;i++)
{
l = read();
r = read();
if(l>=&&r <= m)//在范围内
{
if(c[l] == )
{
printf("%lld\n",a[r] - a[l]+);
}
else
{
printf("%lld\n",a[r]-a[l]);
}
}
else
printf("Crossing the line\n");
}
return ;
}

哎确实是循环多了好多

还是放题解!!!!!!

#include<bits/stdc++.h>
using namespace std; int f[];
bool vis[]; void shai(int n)
{
f[]=;
vis[]=true;
for(int i=;i<=n;i++)
{
if(vis[i]==false) //在筛里进行前缀和
{
f[i]=f[i-]+;//前缀和计算 这处
for(int j=i+i;j<=n;j=j+i)
{
vis[j]=true;//标记操作
}
}
else f[i]=f[i-];//前缀和转移 和这处就很妙了
}
} int main()
{
int n,m;
scanf("%d%d",&m,&n);
shai(n);
for(int i=;i<=m;i++)
{
int l,r;
scanf("%d%d",&l,&r);
if(l< || r>n) cout<<"Crossing the line"<<endl;//判断是否超出区间
else
{
int y=f[r]-f[l-];//此处已经修改
cout<<y<<endl;
}
}
return ;
}

换个角度从判断素数,变成判断合数;

埃氏筛

本质上就是从2开始把它除本身的倍数全部删去,以此类推

区间和可以用前缀和处理;

												

P1865 A % B Problem的更多相关文章

  1. 洛谷P1865 A % B Problem

    1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...

  2. 【luogu P1865 A % B Problem】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1865 其实就是埃拉托色尼筛素数模板... 好像每个数暴力枚举到sqrt()也可以...就算当我无聊练手罢 # ...

  3. [线性筛]P1865 A % B Problem

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

  4. 【数论线性筛】洛谷P1865 A%B problem

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

  5. P1865 A % B Problem 素数筛

    题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...

  6. 洛谷 P1865 A % B Problem

    题目戳 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格 ...

  7. 洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]

    题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...

  8. [Luogu] P1865 A % B Problem

    题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...

  9. 洛谷 P1865 A % B Problem(求区间质数个数)

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

随机推荐

  1. 如何用JavaScript判断dom是否有存在某class的值?

    例如: <html class="no-js"> <head> </head> <body> </body> </ ...

  2. Testlink1.9.17使用方法(第五章 测试用例管理)

    第五章 测试用例管理 QQ交流群:585499566 TestLink支持的测试用例的管理包含二层:分别为新建测试用例集(Test Suites).创建测试用例(Test Cases).可以把测试用例 ...

  3. SQL Server中授予用户查看对象定义的权限

    SQL Server中授予用户查看对象定义的权限   在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数. ...

  4. 【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例

    JSF提供了大量的UI标签来简化创建视图.这些UI标签类似于ASP.NET中的服务器组件.使用这些标签,可以通过其value,binding,action,actionListener等属性直接绑定到 ...

  5. c#数据批量插入

    由于之前面试中经常被问到有关EF的数据批量插入问题,今天以Sqlserver数据库为例,对.net中处理数据批量处理的方案进行了测试对比. 1.四种测试方案 (1)普通的EF数据批量插入:即调用DbS ...

  6. 使用 boost.asio 简单实现 异步Socket 通信

     客户端: class IPCClient { public: IPCClient(); ~IPCClient(); bool run(); private: bool connect(); bool ...

  7. docker往阿里云推镜像和打包镜像

    向仓库推镜像 1. 登录到阿里云docker镜像站点,然后创建仓库. 2.要按照阿里云官方给定的仓库名称来使用,所以我们一般都要继续给准备要上传的镜像二次添加标签,如下所示: 3.在终端登录阿里云站点 ...

  8. logstash关于date时间处理的几种方式总结

    1.第一种,直接在配置文件中自定义时间格式 这是tomcat配置文件中的一段日志时间配置,按照这样的配置,那么输出的日志是这样子的: 然后你继续在logstash中这样子配置 此时logstash就不 ...

  9. Java数据结构简述

    1.数组 概念:一个存储元素的线性集合. 数组声明和创建: dataType[] arrayRefVar = new dataType[arraySize]; 二维数组(多维数组)声明和创建: dat ...

  10. 自定义Chrome浏览器

    一.全局 自用备份,窗体透明化.要添加对应网站的窗体class到对应的位置 /*主页背景*/ /*https://images.cnblogs.com/cnblogs_com/AardWolf/135 ...