题意:题目出的很简单,给定一个数据范围(好吧,又是给定一个范围),然后问你在这个给定的范围内,哪两个相邻素数挨的最近,哪两个最远。

思路:这破题数据量很大,如果直接打表,铁定T,我蛋疼地打过两边了,T了好几次,后来看到队友P用拉宾米勒的算法水过去了,不过到了poj哪里还是T个不停,算是擦边球,后来又wa了好几次,实在不行,也套用了米勒拉宾的模板,本以为顺风水过,谁知又T了,这题搁置了几天,中间看了题解,正解是打一个较小的素数表,然后用这个素数表去筛大的素数,注意要把下标改小,不然存不下,两次晒素数,方法和原理都一样,当时就是没想到!

code:

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>using namespace std;

typedef long long ll;const ll N=1000010;const ll INF=0x3f3f3f3f3f;ll p[N],len,vis[N];

void tab()  //第一个素数表{    len=0;    for (ll i=2;i<N;i++)    {        if (vis[i]) continue;        p[len++]=i;        for (ll j=i;j<N;j+=i)            vis[j]=1;    }}void sol(ll m,ll n)   //根据第一个素数表去筛第二个素数表{     memset(vis, 0, sizeof(vis));            for (ll i = 0; i <len; i++) {                for (ll j = (m/ p[i] + (m % p[i] != 0)) * p[i]; j <= n; j += p[i]) {                    if (j / p[i] != 1)                        vis[j - m] = 1;                }            }}int main(){    tab();    ll m,n;    while (~scanf("%lld %lld",&m,&n))    {        sol(m,n);        ll mn=INF,mx=0,f=-1,fl=1;        ll minl,minr,maxl,maxr;        for (ll i=m;i<=n;i++)        {            if (vis[i-m]||i==1) continue;            if (f!=-1)            {                if (i-f<mn)                {                    mn=i-f;                    minl=f; minr=i;                }                if (i-f>mx)                {                    mx=i-f;                    maxl=f;maxr=i;                }                fl=0;            }            f=i;        }        if (fl) printf("There are no adjacent primes.\n");        else        printf("%lld,%lld are closest, %lld,%lld are most distant.\n",minl,minr,maxl,maxr);    }}//1 2147483647

uva 10140——Prime Distance相关推荐

  1. Prime Distance On Tree-树分治+FFT

    题目描述 Problem description. You are given a tree. If we select 2 distinct nodes uniformly at random, w ...

  2. UVA10140 Prime Distance

    UVA10140 Prime Distance 给定两个整数L,R(1<=L<=R<=2^{31},R-L<=10^6)L,R(1<=L<=R<=231,R− ...

  3. 解题报告:poj2689 Prime Distance

    2017-10-03 11:29:20 writer:pprp 来源:kuangbin模板 从已经筛选好的素数中筛选出规定区间的素数 /* *prime DIstance *给出一个区间[L,U],找 ...

  4. UVA - 524 Prime Ring Problem

    题目链接: UVA - 524 Prime Ring Problem Description(素数环) A ring is composed of n (even number) circles as ...

  5. 1619 例题 Prime Distance(POJ2689 LOJ10197 UVA10140 提高+/省选-) 线性筛 映射关系 0分 筛出区间内质数 超时0分 求任意区间质数的筛子100分

    总目录 在线测评地址(ybt)   只有1个测试点 在线测评地址(POJ)   无法提交 在线测评地址(LOJ)   只有1个测试点 在线测评地址(LUOGU)   要有UVA账号才能提交 1.0分代 ...

  6. Prime Distance POJ - 2689 线性筛

    一个数 $n$ 必有一个不超过 $\sqrt n$ 的质因子. 打表处理出 $1$ 到 $\sqrt n$ 的质因子后去筛掉属于 $L$ 到 $R$ 区间的素数即可. Code: #include&l ...

  7. UVA, 516 Prime Land

    题意:给一个数的指数形式,例:5 1 2 1  num=5^1*2^1  求num-1的质因数分解结果 思路:素数筛法,质因数分解 代码如下: 1 #include <iostream> ...

  8. UVA 516 Prime Land

    UVA516 感觉自己的思维不够灵动变通...特别是写了最近的几道题目之后...感觉得做出加倍努力不然真的就学不进去了..我太难了. #include <iostream> #includ ...

  9. POJ - 2689 Prime Distance(素数区间筛模板)

    题目链接:点击查看 题目大意:给出一段闭区间[l,r],求区间内相邻距离最大的素数对和相邻距离最小的素数对,题目保证r-l<=1e6,1<=l<=r<= 题目分析:因为我们要求 ...

最新文章

  1. eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池
  2. 让用户故事真的像故事那样
  3. 1的恢复出厂设置在哪里_无线路由器怎么恢复出厂设置
  4. mybatis的mapper.xml文件中含有中文注释时运行出错,mybatis配置优化和别名优化 mybatis配置之映射器说明
  5. phpcmsV9 QQ登录问题分析 - 踩坑篇
  6. 百度起诉今日头条;腾讯云超 8000 名员工获 iPhone 11 Pro 奖励;PHP 7.4.1 发布 | 极客头条...
  7. Shell循环输入符合条件为止
  8. 拓端tecdat|R语言深度学习:用keras神经网络回归模型预测时间序列数据
  9. labeltool标注工具使用说明
  10. 迅为恩智浦iTOP-IMX6开发平台
  11. Unity太空大战游戏-Socket网络通信教学示例
  12. nyoj 54-小明的存钱计划 (遍历 + 判断)
  13. nginx限速_NGINX限速简而言之
  14. Guava中基础工具类Joiner的使用字符串拼接方法 joiner.on
  15. JavaScript从初级往高级走系列————prototype
  16. shell变量的定义
  17. 工具——ultraedit常用技巧
  18. 99mtc:锝99m同位素-小分子/抗体/纳米粒子等材料放射性标记材料标记实验的设计原则
  19. 2008-2020年数据上市公司高管团队异质性数据包含Stata代码
  20. 目前是自媒体创业的最好时机吗?

热门文章

  1. Bootstrap中的下拉列表
  2. WAP自助建站 我编程之路的启蒙
  3. MySQL5.7本地首次登录win10报错修改
  4. “景驰科技杯”2018年华南理工大学程序设计竞赛 A. 欧洲爆破(思维+期望+状压DP)...
  5. jackson - @JsonProperty的使用
  6. error connection reset by peer 104
  7. Linux 常用命令二 pwd cd
  8. 极光推送JPush的快速集成
  9. Android官方培训课程中文版(v0.9.5)
  10. php 修改 wordpress,wordpress怎么编辑代码修改页面