HDU 3823 暴力枚举

题意:给出A,B, 找出一个最小的m,使A+m,B+m为连续的两个素数。

枚举2000W以内的素数暴力找。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 21000000
bool isprime[maxn];
long long prime[maxn],nprime;
void getprime()
{
    memset(isprime,1,sizeof(isprime));
    nprime=0;
    long long i,j;
    for(i=2; i<maxn; i++)
        if(isprime[i])
        {
            prime[nprime++]=i;
            for(j=i*i; j<maxn; j+=i)
                isprime[j]=0;
        }
}
bool isd[150];
int main()
{
    getprime();
    int t,ca=0;
    long long a,b;
    for(int i=1; i<nprime; i++)
        if(prime[i]-prime[i-1]<150)
            isd[prime[i]-prime[i-1]]=1;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%I64d%I64d",&a,&b);
        if(a>b)
            swap(a,b);
        long long ans=-1,d=b-a;
        printf("Case %d: ",++ca);
        if(!isd[d]||a==b)
        {
            puts("-1");
            continue;
        }
        for(int i=1; i<nprime; i++)
            if(prime[i]-prime[i-1]==d&&a<=prime[i-1])
            {
                ans=prime[i-1]-a;
                break;
            }
        printf("%I64d\n",ans);
    }
    return 0;
}
时间: 2024-11-01 20:32:46

HDU 3823 暴力枚举的相关文章

hdu 1077 Catching Fish 计算几何+暴力枚举

   简单的暴力枚举,枚举两个点在圆上,用向量法求下圆心.复杂度o(n^3),但数据量只有300 /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib> #include <c

2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

/* 将给定的一个字符串分解成ABABA 或者 ABABCAB的形式! 思路:暴力枚举A, B, C串! */ #include<iostream> #include<cstring> #include<cstdio> #include<string> using namespace std; string str; char ch[55]; int main(){ int t; scanf("%d", &t); getchar(

暴力枚举Gmail邮箱地址的新姿势

本文讲的是暴力枚举Gmail邮箱地址的新姿势, 本文将介绍一种比较经典的枚举用户Gmail邮箱地址的新思路,这种思路可以检索成千上万个Gmail邮箱地址. 我偶然发现一个小故障,允许我大量猜测现有的且可能是未知的Google帐户地址. 免责声明:本文介绍的方法可能只是一个没有进行合理限制的接口,没有什么太花哨的姿势,所以如果你正在寻找一些比较6的0day,请绕道.  小故障 https://mail.google.com/mail/gxlu这个网址没有对请求次数做任何限制.另外,我注意到,提供不

HDOJ/HDU 1015 Safecracker(枚举、暴力)

Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klein safe behind a painting in the second-floor library. Klein safes are extremely rare; most of them, along with Klein and his factory, were destroyed in Wo

HDU 4380 预处理枚举

题意:给出n个房子m个矿问从n个房子选三个组成的三角形内部矿数为奇数有多少种选法. 先预处理一下每条线段正上方有多少个点,然后在枚举三条线段就可以了. #include <iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; struct point { long long x,y; }; int

codeforces Restore Cube(暴力枚举)

/* 题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!), 问是否可以还原出一个立方体的坐标,注意这一句话: The numbers in the i-th output line must be a permutation of the numbers in i-th input line! 思路: 我们只要对输入的每一行数据进行枚举每一个排列, 然后检查时候能构成立方体就好了! 检查立方体:找到最小的边长的长度 l, 统计边长为l, sqrt(2)*l, sqrt

hdu vector-hdu 3823 prime friend 求大神为什么wa,已经wa怕了

问题描述 hdu 3823 prime friend 求大神为什么wa,已经wa怕了 http://acm.hdu.edu.cn/showproblem.php?pid=3823 #include<stdio.h> #include<vector> using namespace std; #define M 20000010 bool pri[M] = {0}; int ans[M],temp = 0; vector<int>fans[152]; int abs(in

hdu 1238 Substrings

点击打开链接hdu 1238 思路:kmp+暴力枚举子串 分析: 1 题目要求找到一个子串x,满足x或x的逆串是输入的n个字符串的子串,求最大的x,输出x的长度 2 题目的n最大100,每一个字符串的最大长度为100,那么暴力枚举子串就是o(n^2)才10000肯定是不会超时的,但是由于这里涉及到了逆串的问题,所以我们应该还要求出n个子串的逆串,然后在求最大的x. 代码: #include<iostream> #include<algorithm> #include<cstd

hdu 4531吉哥系列故事之乾坤大挪移

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4531 这道搜索题挺恶心的...比赛时没有写出来. 首先要解决的问题是怎样判断符合条件的状 态,即所有一样的颜色是连在一起的.我是采用最简单也最搓的方法,按上下左右顺序给每一个小三角 形标号1-36,然后建立一张邻接矩阵图,然后bfs判断. 然后就是主要的暴力枚举部分,每次有 12种状态转移的选择,开始时用dfs,但爆栈了.然后改成bfs,又各种TLE.然后就是不断地优化优化. 判重的状态可以用一个