【Codeforces 776B】Sherlock and his girlfriend
【题目链接】
【算法】
将所有质数染成1,合数染成2即可
【代码】
#include<bits/stdc++.h> using namespace std; #define MAXN 100000 int i,N,x; bool b1,b2; int b[MAXN+10]; template <typename T> inline void read(T &x) { int f=1; x=0; char c = getchar(); for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; } for (; isdigit(c); c = getchar()) x = x * 10 + c - '0'; x *= f; } template <typename T> inline void write(T x) { if (x < 0) { putchar('-'); x = -x; } if (x > 9) write(x/10); putchar(x%10+'0'); } template <typename T> inline void writeln(T x) { write(x); puts(""); } inline bool prime(int x) { int i; if (x == 1) return false; for (i = 2; i <= sqrt(x); i++) { if (!(x % i)) return false; } return true; } int main() { read(N); for (i = 2; i <= N + 1; i++) { b[i] = prime(i); if (b[i]) b1 = true; else b2 = true; } if (b1 && b2) puts("2"); else puts("1"); for (i = 2; i <= N + 1; i++) { if ((b1 && !b2) || (!b1 && b2)) write(1); else write(b[i]?1:2); if (i <= N) putchar(' '); } puts(""); return 0; }