zoukankan      html  css  js  c++  java
  • Prime k-tuple UVA

     就是大区间求素数  参考

    LightOJ - 1197

    https://www.cnblogs.com/WTSRUVF/p/9190660.html

    直接套那个代码就好了

    #include <iostream>
    #include <cstdio>
    #include <sstream>
    #include <cstring>
    #include <map>
    #include <set>
    #include <vector>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    #define MOD 2018
    #define LL long long
    #define ULL unsigned long long
    #define Pair pair<int, int>
    #define mem(a, b) memset(a, b, sizeof(a))
    #define _  ios_base::sync_with_stdio(0),cin.tie(0)
    using namespace std;
    const int maxn = 2 * 1e9;
    int primes[46350];
    bool vis[maxn+10];
    int ans = 0;
    vector<int> G;
    
    void init()
    {
        mem(vis,0);
        vis[1] = 1;
        for(int i=2; i<=46340; i++)
            if(!vis[i])
            {
                primes[ans++] = i;
                for(LL j=(LL)i*i; j<=46340; j+=i)
                    vis[j] = 1;
            }
    }
    
    int main()
    {
        init();
        int T;
        int kase = 0;
        LL a, b, u, s;
        cin>> T;
        while(T--)
        {
            G.clear();
            int res = 0;
            mem(vis,0);
            cin>> a >> b >> u >>s;
           // if(a <= 2) a = 2;
            int len = b - a;
            for(int i=0; i<ans && primes[i] * primes[i] <= b; i++)
            {
                int j = a/primes[i];
                if(j*primes[i] < a) j++;
                if(j <= 1) j++;
                while(j*primes[i] <= b)
                {
                    vis[j*primes[i] - a] = 1;
                    j++;
                }
    
            }
            if(a == 1) vis[0] = 1;
            for(int k=0; k<=len; k++)
                if(!vis[k] && a + k > 1)
                    G.push_back(a+k);
            for(int i=0;  i + u - 1<G.size(); i++)
                if(G[i+u-1] - G[i] == s)
                    res++;
            printf("%d
    ",res);
    
        }
    
        return 0;
    }

    我觉着人家写的代码比较好  参考一下

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <vector>
    #include <algorithm>
     
    using namespace std;
    typedef long long ll;
    const int sqrt_inf = 46340;
    const int maxn = 2 * 1e9;
     
    int np, pri[sqrt_inf];
    bool vis[maxn+5];
    vector<int> vec;
     
    void prime_table (int n) {
        np = 0;
        memset(vis, 0, sizeof(vis));
     
        for (int i = 2; i <= n; i++) {
            if (vis[i])
                continue;
     
            pri[np++] = i;
            for (int j = i * i; j <= n; j += i)
                vis[j] = 1;
        }
    }
     
    int solve () {
        int ret = 0;
        int a, b, s, k;
        vec.clear();
        memset(vis, 0, sizeof(vis));
     
        scanf("%d%d%d%d", &a, &b, &k, &s);
     
        for (int i = 0; i < np && pri[i] * pri[i] <= b; i++) {
            int u = pri[i], d = (u - a % u) % u;
     
            if (u == a + d)
                d += u;
     
            while (d <= b - a) {
                vis[d] = 1;
                d += u;
            }
        }
     
        for (int i = 0; i <= b-a; i++) {
            if (vis[i] == 0 && a + i > 1)
                vec.push_back(a+i);
        }
     
     
        for (int i = 0; i + k - 1 < vec.size(); i++) {
            if (vec[i+k-1] - vec[i] == s)
                ret++;
        }
     
        return ret;
    }
     
    int main () {
        prime_table(sqrt_inf);
     
        int cas;
        scanf("%d", &cas);
     
        while (cas--) {
            printf("%d
    ", solve());
        }
        return 0;
    }
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    点对点风格软件架构模式
    《XXX重大技术需求征集系统》的可用性和可修改性战术分析
    淘宝网应用场景分析
    《架构漫谈》读后感
    《软件需求模式》阅读笔记06
    hdfs会出现的一些问题
    经常使用的架构模式之一——客户端-服务器模式
    阅读《大型网站技术架构》
    以《淘宝网》为例分析质量属性
    架构漫谈读后感
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/9330449.html
Copyright © 2011-2022 走看看