zoukankan      html  css  js  c++  java
  • 洛谷 P1865 A % B Problem

    题目

    题目背景

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

    实际上该题还是很水的

    题目描述

    区间质数个数

    输入输出格式

    输入格式:

    一行两个整数 询问次数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

    Solution:

    炒鸡大水题。注意到m范围1000000,需要询问某个区间内的质数个数,直接可以联想到前缀和,很自然的想到线性筛预处理出质数,然后就OK了。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int T,m,num,sum[1000005]; 
     4 bool a[1000005];
     5 int main()
     6 {
     7     scanf("%d%d",&T,&m);
     8     for(register int i=2;i<=m;i++)
     9     {
    10         if(a[i]==0)
    11         {
    12             sum[i]=sum[i-1]+1; 
    13             for(register int j=i;j<=m;j+=i)a[j]=1;
    14         } 
    15         else sum[i]=sum[i-1];
    16     }
    17     while(T--)
    18     {
    19         int x,y;
    20         scanf("%d%d",&x,&y);
    21         if(y>m||y<1||x<1) printf("Crossing the line
    ");
    22         else  
    23         {
    24              printf("%d
    ",sum[y]-sum[x-1]);
    25         }
    26     }
    27     return 0;
    28 }
  • 相关阅读:
    测试中发现哪些bug
    兼容性测试
    接口测试基础
    Java基础概念
    Linux基础命令
    Selenium笔记
    常见软件测试类型分类
    性能测试类型
    网络基础题目
    常见测试方法
  • 原文地址:https://www.cnblogs.com/five20/p/7862132.html
Copyright © 2011-2022 走看看