zoukankan      html  css  js  c++  java
  • CF385C Bear and Prime Numbers

    思路:

    需要对埃氏筛法的时间复杂度有正确的认识(O(nlog(log(n)))),我都以为肯定超时了,结果能过。

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 bool is_prime[10000005];
     5 vector<int> prime;
     6 int num[10000005], ans[10000005];
     7 void sieve(int n)
     8 {
     9     for (int i = 0; i <= n; i++) is_prime[i] = true;
    10     is_prime[0] = is_prime[1] = false;
    11     for (int i = 2; i <= n; i++)
    12     {
    13         if (is_prime[i])
    14         {
    15             prime.push_back(i);
    16             for (int j = 2 * i; j <= n; j += i) is_prime[j] = false;
    17         }
    18     }
    19 }
    20 int main()
    21 {
    22     sieve(10000000);
    23     int n, m, x, a, b;
    24     while (scanf("%d", &n) != EOF)
    25     {
    26         memset(num, 0, sizeof num);
    27         memset(ans, 0, sizeof ans);
    28         int l = prime.size();
    29         for (int i = 0; i < n; i++) { scanf("%d", &x); num[x]++; }
    30         for (int i = 0; i < l; i++) // 这段代码和素数筛法是一样的
    31         {
    32             int now = prime[i];
    33             for (int j = now; j <= 10000000; j += now)
    34             {
    35                 if (num[j]) ans[now] += num[j];
    36             }
    37         }
    38         for (int i = 1; i <= 10000000; i++) ans[i] += ans[i - 1];
    39         scanf("%d", &m);
    40         for (int i = 0; i < m; i++)
    41         {
    42             scanf("%d %d", &a, &b);
    43             if (a > b) { puts("0"); continue; }
    44             a = min(a, 10000000); b = min(b, 10000000);
    45             printf("%d
    ", ans[b] - ans[a - 1]);
    46         }
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    web中间件之nginx
    JVM之工具分析
    jprofiler监控tomcat
    如何查看端口被占用
    训练赛第二场C题 zoj 2339 Hyperhuffman
    训练赛第三场A题 zoj 559
    训练赛第二场G题 ZOJ 2343
    训练赛第一场D题
    训练赛第一场A题 (ZOJ 2313)
    HDU 1422 重温世界杯 DP题
  • 原文地址:https://www.cnblogs.com/wangyiming/p/8909460.html
Copyright © 2011-2022 走看看