首页 > 其他 > 详细

洛谷 CF776B Sherlock and his girlfriend

时间:2019-07-11 20:43:20      阅读:115      评论:0      收藏:0      [点我收藏+]

CF776B Sherlock and his girlfriend

乍一看貌似有点难。

仔细想想会发现这道题目有点, 首先,所有的素数都可以直接染成1,因为他们之间不存在质因子的关系。
然后,所有的合数可以直接染成2,,,
为什么呢?
因为一旦某个数字被染成了2,就意味着这个数是非素数(也就是合数),那么他就不可能再是其他某个数的质因子了,这也就意味着不可能用到第三种颜色。


Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
//Mystery_Sky
//
#define M 1000100
int prime[M], check[M], tot;
int color[M];
int n, ans;

inline void get_prime()
{
    check[0] = check[1] = 1;
    for(int i = 2; i <= 100001; i++) {
        if(!check[i]) prime[++tot] = i;
        for(int j = 1; j <= tot; j++) {
            if(i * prime[j] > 100001) break;
            check[i * prime[j]] = 1;
            if(i % prime[j] == 0) break; 
        }
    } 
}

int main() {
    get_prime();
    scanf("%d", &n);
    n >= 3 ? printf("2\n") : printf("1\n");
    for(int i = 1; i <= n; i++) {
        if(check[i+1]) printf("2 ");
        else printf("1 ");
    }
    return 0;
}

洛谷 CF776B Sherlock and his girlfriend

原文:https://www.cnblogs.com/Benjamin-cpp/p/11172514.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!