zoukankan      html  css  js  c++  java
  • codeforces 385C Bear and Prime Numbers

    题意:给你一个数列,和m个询问,求 数组种 l -r 中所有质数的的倍数的个数和。

    解题思路:变形筛法。注意细节

    解题代码:

     1 // File Name: 385c.cpp
     2 // Author: darkdream
     3 // Created Time: 2015年03月07日 星期六 18时24分53秒
     4 
     5 #include<vector>
     6 #include<list>
     7 #include<map>
     8 #include<set>
     9 #include<deque>
    10 #include<stack>
    11 #include<bitset>
    12 #include<algorithm>
    13 #include<functional>
    14 #include<numeric>
    15 #include<utility>
    16 #include<sstream>
    17 #include<iostream>
    18 #include<iomanip>
    19 #include<cstdio>
    20 #include<cmath>
    21 #include<cstdlib>
    22 #include<cstring>
    23 #include<ctime>
    24 #define LL long long
    25 using namespace std;
    26 const int maxn = 1000000*10 + 1000; 
    27 int      ans[maxn];
    28 int       hs[maxn];
    29 int      ahs[maxn];
    30 int n ;
    31 void solve()
    32 {
    33    //int tmp = sqrt(maxn); 
    34    for(int i = 2;i < maxn;i ++)
    35    {
    36        if(hs[i] == 0)
    37        {
    38           for(int j = i ;j < maxn;j += i)
    39            {
    40               
    41               ans[i] += ahs[j] ;
    42               hs[j] = 1; 
    43           }
    44        }
    45    }
    46    for(int i = 2;i <= maxn;i ++)
    47    {
    48      ans[i] += ans[i-1];
    49    }
    50 }
    51 int main(){
    52   memset(ans,0,sizeof(ans));
    53   memset(hs,0,sizeof(hs));
    54   memset(ahs,0,sizeof(ahs));
    55   scanf("%d",&n);
    56   int _max = 0;
    57   for(int i = 1;i <= n;i ++)
    58   {
    59      int tmp ; 
    60      scanf("%d",&tmp);
    61      ahs[tmp] ++;
    62      _max = max(tmp,_max);
    63   }
    64   solve();
    65   int m ; 
    66   scanf("%d",&m);
    67   for(int i = 1;i <= m;i ++)
    68   {
    69     int l , r; 
    70     scanf("%d %d",&l,&r);
    71     if(l > _max)
    72     {
    73       printf("0
    ");
    74       continue;
    75     }
    76     r = min(r,_max);
    77     printf("%d
    ",ans[r] - ans[l-1]);
    78   }
    79 return 0;
    80 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    timeout in asp.net
    ASP.NET_SessionId vs .ASPXAUTH why do we need both of them?
    Visual paradigm软件介绍
    OJ网站程序员必备
    c++异常详解
    C++STL之双端队列容器
    GPU的线程模型和内存模型
    C++ 中memset 勿要对类使用
    trait与policy模板技术
    C++标准库
  • 原文地址:https://www.cnblogs.com/zyue/p/4320893.html
Copyright © 2011-2022 走看看