社区讨论

那个下划线题解,被我格式化了!

P3383【模板】线性筛素数参与者 11已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@mi7ype9k
此快照首次捕获于
2025/11/21 05:47
4 个月前
此快照最后确认于
2025/11/21 06:45
4 个月前
查看原帖
原来是这样
CPP
#include<cstdio>
using namespace std;
inline char _(){
    static char _____________[1<<17],*______________=_____________,*_______________=_____________;
    return ______________==_______________&&(_______________=(______________=_____________)+fread(_____________,1,1<<17,stdin),______________==_______________)?EOF:*______________++;
}
template <class T> inline void __(T&____,register char ___=_(),int _____=1){
    for(____=0;(___<'0'||___>'9')&&___!='-';___=_());
    for(___=='-'?_____=-1,___=_():0;(___>='0'&&___<='9');___=_()) (____*=10)+=___-'0'; ____*=_____;
}
bool ______[10000007];
int _______[10000007];
inline void ________(){
    ______[1]=1;
    for(register int _________=2;_________<=10000000;++_________){
        if(!______[_________]) _______[++_______[0]]=_________;
        for(register int __________=1;__________<=_______[0]&&_________*_______[__________]<=10000000;++__________){
            ______[_________*_______[__________]]=1,_______[_________*_______[__________]]=1;
            if(_________%_______[__________]==0) break;
        }
    }
}
int main(){
    ________();
    int ____,___________,____________;
    __(____),__(___________);
    for(register int _________=1;_________<=___________;++_________){
        __(____________);
        if(!______[____________]) puts("Yes");
        else puts("No"); 
    }
    return 0;
}
经我处理,变成这样了
CPP
#include<cstdio>
using namespace std;
inline char p(){
    static char c[1<<17],*b=c,*a=c;
    return b==a&&(a=(b=c)+fread(c,1,1<<17,stdin),b==a)?EOF:*b++;
}
template <class T> inline void n(T&l,register char m=p(),int k=1){
    for(l=0;(m<'0'||m>'9')&&m!='-';m=p());
    for(m=='-'?k=-1,m=p():0;(m>='0'&&m<='9');m=p()) (l*=10)+=m-'0'; l*=k;
}
bool j[10000007];
int i[10000007];
inline void h(){
    j[1]=1;
    for(register int g=2;g<=10000000;++g){
        if(!j[g]) i[++i[0]]=g;
        for(register int f=1;f<=i[0]&&g*i[f]<=10000000;++f){
            j[g*i[f]]=1,i[g*i[f]]=1;
            if(g%i[f]==0) break;
        }
    }
}
int main(){
    h();
    int l,e,d;
    n(l),n(e);
    for(register int g=1;g<=e;++g){
        n(d);
        if(!j[d]) puts("Yes");
        else puts("No"); 
    }
    return 0;
}

回复

11 条回复,欢迎继续交流。

正在加载回复...