ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【题解】UVA10140 [Prime Distance]

2019-03-09 15:41:05  阅读:293  来源: 互联网

标签:Prime last int 题解 base && return UVA10140 sav


【题解】UVA10140 Prime Distance

哈哈哈哈\(miller-rabbin\)水过去了哈哈哈

还能怎么办呢?\(miller-rabbin\)直接搞。枚举即可,还跑得飞快。

当然此题由于\(20000^2 >2^{31}\),直接预处理\(20000\)内的质数就好了

放mr的代码

#include<bits/stdc++.h>

using namespace std;typedef long long ll;
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;--t)
#define RP(t,a,b)  for(register int t=(a),edd=(b);t<=edd;++t)
#define ERP(t,a)   for(register int t=head[a];t;t=e[t].nx)
#define midd register int mid=(l+r)>>1
#define TMP template < class ccf >
#define lef l,mid,pos<<1
#define rgt mid+1,r,pos<<1|1
#define pushup(pos) (seg[pos]=seg[pos<<1]+seg[pos<<1|1])
TMP inline ccf qr(ccf b){
    register char c=getchar();register int q=1;register ccf x=0;
    while(c<48||c>57)q=c==45?-1:q,c=getchar();
    while(c>=48&&c<=57)x=x*10+c-48,c=getchar();
    return q==-1?-x:x;}
TMP inline ccf Max(ccf a,ccf b){return a<b?b:a;}
TMP inline ccf Min(ccf a,ccf b){return a<b?a:b;}
TMP inline ccf Max(ccf a,ccf b,ccf c){return Max(a,Max(b,c));}
TMP inline ccf Min(ccf a,ccf b,ccf c){return Min(a,Min(b,c));}
TMP inline ccf READ(ccf* _arr,int _n){RP(t,1,_n)_arr[t]=qr((ccf)1);}
//----------------------template&IO---------------------------
#define int long long
inline int ksm(ll base,ll p,ll mod){register int ret=1;base%=mod;
    for(register ll t=p;t;t>>=1,(base*=base)%=mod) if(t&1) (ret*=base)%=mod;
    return ret%mod;
}

inline bool T(int base,int p){
    for(register int t=p-1,sav;t;t>>=1){
    sav=ksm(base,t,p);
    if(sav!=1&&sav!=p-1) return 0;
    if((t&1)||sav==p-1) return 1;
    }return 1;
}

inline bool mb(int x){
    if(x==2||x==3||x==13||x==17) return 1;
    if(x==1) return 0;
    return  T(2,x)&&T(3,x)&&T(13,x)&&T(17,x);
}

int L,R,last,Mx,Mn,ans1,ans2,ans3,ans4;
main(){
    while(cin>>L>>R){
    Mx=0;
    Mn=R-L+2;last=R+1;
    RP(t,L,R) if(mb(t)){ last=t; break;}
    if(last==R+1) {printf("There are no adjacent primes\n"); continue;}
    RP(t,last+1,R){
        if(mb(t)){
        if(t-last>Mx) Mx=t-last,ans3=last,ans4=t;
        if(t-last<Mn) Mn=t-last,ans1=last,ans2=t;
        last=t;
        }
    }
    if(Mx==0||Mn==R-L+2) printf("There are no adjacent primes.\n");
    else printf("%d,%d are closest, %d,%d are most distant.\n",ans1,ans2,ans3,ans4);
    }
    return 0;
}

标签:Prime,last,int,题解,base,&&,return,UVA10140,sav
来源: https://www.cnblogs.com/winlere/p/10500966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有