CF776B Sherlock and his girlfriend

CF776B Sherlock and his girlfriend

一个数和它的质因数不能同色。

素数的约数只有本身和1。

显然所有素数都可以染同色,合数同理。

欧拉筛一筛。

注意特判n<3的情况。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define re register
 5 using namespace std;
 6 #define N 100002
 7 int n,v[N],pri[N],cct;bool is[N];
 8 int main(){
 9     for(int i=2;i<N;++i){
10         if(!v[i]) is[v[i]=pri[++cct]=i]=1;
11         for(int j=1;j<=cct;++j){
12             if(pri[j]>i||pri[j]*i>=N) break;
13             v[pri[j]*i]=pri[j];
14         }
15     }scanf("%d",&n);
16     if(n<3){
17         puts("1");
18         for(int i=1;i<=n;++i) printf("1 ");
19     }else{
20         puts("2");
21         for(re int i=2;i<=n+1;++i) printf("%d ",(!is[i])+1);
22     }
23     return 0;
24 }
View Code

 

posted @ 2018-10-31 16:06  kafuuchino  阅读(289)  评论(0编辑  收藏  举报