1 条题解

  • 6
    @ 2023-4-8 14:50:24

    目前全站非打表最优解。

    线性筛基础上添加了对于质数 ppp=6k±1p=6k\pm1 的性质。

    Link

    PS:哪个管理手欠重测/取消成绩我线下单杀你。

    代码
    #include<bitset>
    #pragma GCC optimize(3)
    #pragma GCC target("avx")
    #pragma GCC optimize("Ofast")
    #pragma GCC optimize("inline")
    #pragma GCC optimize("-fgcse")
    #pragma GCC optimize("-fgcse-lm")
    #pragma GCC optimize("-fipa-sra")
    #pragma GCC optimize("-ftree-pre")
    #pragma GCC optimize("-ftree-vrp")
    #pragma GCC optimize("-fpeephole2")
    #pragma GCC optimize("-ffast-math")
    #pragma GCC optimize("-fsched-spec")
    #pragma GCC optimize("unroll-loops")
    #pragma GCC optimize("-falign-jumps")
    #pragma GCC optimize("-falign-loops")
    #pragma GCC optimize("-falign-labels")
    #pragma GCC optimize("-fdevirtualize")
    #pragma GCC optimize("-fcaller-saves")
    #pragma GCC optimize("-fcrossjumping")
    #pragma GCC optimize("-fthread-jumps")
    #pragma GCC optimize("-funroll-loops")
    #pragma GCC optimize("-fwhole-program")
    #pragma GCC optimize("-freorder-blocks")
    #pragma GCC optimize("-fschedule-insns")
    #pragma GCC optimize("inline-functions")
    #pragma GCC optimize("-ftree-tail-merge")
    #pragma GCC optimize("-fschedule-insns2")
    #pragma GCC optimize("-fstrict-aliasing")
    #pragma GCC optimize("-fstrict-overflow")
    #pragma GCC optimize("-falign-functions")
    #pragma GCC optimize("-fcse-skip-blocks")
    #pragma GCC optimize("-fcse-follow-jumps")
    #pragma GCC optimize("-fsched-interblock")
    #pragma GCC optimize("-fpartial-inlining")
    #pragma GCC optimize("no-stack-protector")
    #pragma GCC optimize("-freorder-functions")
    #pragma GCC optimize("-findirect-inlining")
    #pragma GCC optimize("-fhoist-adjacent-loads")
    #pragma GCC optimize("-frerun-cse-after-loop")
    #pragma GCC optimize("inline-small-functions")
    #pragma GCC optimize("-finline-small-functions")
    #pragma GCC optimize("-ftree-switch-conversion")
    #pragma GCC optimize("-foptimize-sibling-calls")
    #pragma GCC optimize("-fexpensive-optimizations")
    #pragma GCC optimize("-funsafe-loop-optimizations")
    #pragma GCC optimize("inline-functions-called-once")
    #pragma GCC optimize("-fdelete-null-pointer-checks")
    #pragma GCC optimize(2)
    #define Max(a,b) a>b?a:b
    int n,m;
    static std::bitset<100000005>n_pri;
    // bool n_pri[100000005];
    static int p[33333333],top;
    int a[5140020];
    #define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?EOF:*p1++
    static char buf[1000000],*p1=buf,*p2=buf;
    inline int read()
    {
        char c=getchar();int x=0;
        while(c<'0'||c>'9')c=getchar();
    	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x;
    }
    int main()
    {
    	int q=read();
    	for(int i=1;i<=q;i++)
    	{
    		a[i]=read();
    		if((a[i]&1)&&(a[i]%3)&&(a[i]%5)&&(a[i]%7)&&(a[i]%11)||(!(a[i]^2))||(!(a[i]^3))||(!(a[i]^5))||(!(a[i]^7))||(!(a[i]^11)))n=Max(n,a[i]);
    	}
    	m=(n>>1);
    	n_pri[1]=1;
    	for(int i=2;i<=5;i++)
    	{
    		if(!n_pri[i])
    		{
    			p[++top]=i;	
    		}
    		for(int j=1;i*p[j]<=n;j++)
    		{
    			n_pri[i*p[j]]=1;
    			if(!(i%p[j]))break;
    		}
    	}
    	for(int k=6;k<=m;k+=6)
    	{
    		int i=k+1;
    		if(!n_pri[i])
    		{
    			p[++top]=i;	
    		}
    		for(int j=1;i*p[j]<=n;j++)
    		{
    			n_pri[i*p[j]]=1;
    			if(!(i%p[j]))break;
    		}
    		i+=4;
    		if(!n_pri[i])
    		{
    			p[++top]=i;	
    		}
    		for(int j=1;i*p[j]<=n;j++)
    		{
    			n_pri[i*p[j]]=1;
    			if(!(i%p[j]))break;
    		}
    	}
    	for(int i=1;i<=q;i++)
    	{
    		if((!(a[i]&1)&&(a[i]^2))||(!(a[i]%3)&&(a[i]^3))||(!(a[i]%5)&&(a[i]^5))||(!(a[i]%7)&&(a[i]^7))||(!(a[i]%11)&&(a[i]^11))||n_pri[a[i]]){putchar('N');putchar('o');putchar('\n');}
    		else{putchar('Y');putchar('e');putchar('s');putchar('\n');}
    	}
        return 0;
    }
    
    • 1

    信息

    ID
    597
    时间
    1500ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    266
    已通过
    10
    上传者