zoukankan      html  css  js  c++  java
  • 「CF779B」「LOJ#10201.」「一本通 6.2 练习 4」Sherlock and His Girlfriend(埃氏筛

    题目描述

    原题来自:Codeforces Round #400 B.

    Sherlock 有了一个新女友(这太不像他了!)。情人节到了,他想送给女友一些珠宝当做礼物。

    他买了 nnn 件珠宝。第 iii 件的价值是 i+1i+1i+1。那就是说,珠宝的价值分别为 2,3,4,⋯,n+12,3,4,cdots ,n+12,3,4,,n+1

    Watson 挑战 Sherlock,让他给这些珠宝染色,使得一件珠宝的价格是另一件的质因子时,两件珠宝的颜色不同。并且,Watson 要求他最小化颜色的使用数。

    请帮助 Sherlock 完成这个简单的任务。

    输入格式

    只有一行一个整数 nnn,表示珠宝件数。

    输出格式

    第一行一个整数 kkk,表示最少的染色数;
    第二行 nnn 个整数,表示第 111 到第 nnn 件珠宝被染成的颜色。若有多种答案,输出任意一种。

    样例

    样例输入 1

    3

    样例输出 1

    2
    1 1 2

    样例输入 2

    4

    样例输出 2

    2
    2 1 1 2

    样例说明

    因为 222 是 444 的一个质因子,因此第一件珠宝与第三件珠宝的颜色必须不同。

    数据范围与提示

    对于全部数据,1≤n≤1051le nle 10^51n105

    题解

    论读题的重要性系列qwq

    因为麻烦的只有质数,所以把质数染成1,把其它的数染成2就行了。

     1 编号    题目    状态    分数    总时间    内存    代码 / 答案文件    提交者    提交时间
     2 #241498    #10201. 「一本通 6.2 练习 4」Sherlock and His Girlfriend Accepted    100    65 ms    316 KiB    C++ / 393 B    qwerta    2018-10-23 21:21:17
     3 #include<iostream>
     4 #include<cstdio>
     5 using namespace std;
     6 bool sf[100003];
     7 int main()
     8 {
     9     //freopen("a.in","r",stdin);
    10     int n;
    11     scanf("%d",&n);
    12     n++;
    13     int flag=0;
    14         //埃氏筛
    15     for(int i=2;i<=n;++i)
    16     if(!sf[i])
    17     {
    18         for(int j=i+i;j<=n;j+=i)
    19         {
    20             flag++;
    21             sf[j]=1;
    22         }
    23     }
    24     if(!flag)
    25     cout<<1<<endl;
    26     else cout<<2<<endl;
    27     for(int i=2;i<=n;++i)
    28     printf("%d ",sf[i]+1);
    29     return 0;
    30 }
  • 相关阅读:
    表详细操作
    库相关操作
    数据库一
    协程
    多线程2
    .Net鼠标随动窗口
    .Net操作音频
    .Net操作注册表--un
    .Net操作.exe文件
    .Net连接数据库(AOD.Net)
  • 原文地址:https://www.cnblogs.com/qwerta/p/9839843.html
Copyright © 2011-2022 走看看