1 条题解
-
6
目前全站非打表最优解。
线性筛基础上添加了对于质数 , 的性质。
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
- 上传者