题目描述

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

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

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

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

输入格式

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

输出格式

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

样例

样例输入 1

3

样例输出 1

2
1 1 2

样例输入 2

4

样例输出 2

2
2 1 1 2


思路:

这道题十分简单,只需要把质数变为同一种颜色,合数变为同一种颜色就行了。代码如下:

#include<bits/stdc++.h>
using namespace std;
bool a[10000005]={};
int f[10000005],sum[10000005]; void SZS(int n){
memset(a,1,sizeof a);
int toto=0;
for(int i=2;i<=n;i++){
if(a[i])
f[++toto]=i;
for(int j=1;j<=toto&&i*f[j]<=n;j++){
a[i*f[j]]=0;
if(i%f[j]==0)
break;
} //线性筛
}
} int main(){
int n;
scanf("%d",&n);
SZS(n+1); //因为n的j价值是n+1,所以需要在处理时加1;
if(n<=2){
printf("1\n"); //如果n=1,那么只有2,只用涂一种颜色
//如果n=2,那么价值为2,3,均是质数,也只用涂一种颜色;
}
else
printf("2\n"); //如果n>2,那么至少就有2,3,4,一定要涂两种颜色;
for(int i=2;i<=n+1;i++){
if(a[i]){
printf("1 "); //如果是质数,就涂1;
}
else
printf("2 "); //合数涂2;
//因为第一个的价值是2,所以不用考虑1这种既不是质数又不是合数的情况;
}
}

Sherlock and His Girlfriend题解的更多相关文章

  1. 「CF779B」「LOJ#10201.」「一本通 6.2 练习 4」Sherlock and His Girlfriend(埃氏筛

    题目描述 原题来自:Codeforces Round #400 B. Sherlock 有了一个新女友(这太不像他了!).情人节到了,他想送给女友一些珠宝当做礼物. 他买了 nnn 件珠宝.第 iii ...

  2. CF776B Sherlock and his girlfriend

    题目地址 题目链接 题解 这题很有意思啊qwq.本来是写算出每个数的质约数的,然后写到一半发现,质约数互相不影响,有质约数的数肯定是合数. 所以合数染一种色,质数染一种色就好 #include < ...

  3. Sherlock and His Girlfriend(信息学奥赛一本通 1623)

    [题目描述] 原题来自:Codeforces Round #400 B. Sherlock 有了一个新女友(这太不像他了!).情人节到了,他想送给女友一些珠宝当做礼物. 他买了 n 件珠宝.第 i 件 ...

  4. Codeforces_776B: Sherlock and his girlfriend(素数筛)

    题目链接 题意:对2~n+1染色,一个数不能与其素因子同色. 故而只需两种颜色即可,素数染1,合数染2便可满足条件 #include<bits/stdc++.h> using namesp ...

  5. 【Codeforces 776B】Sherlock and his girlfriend

    [题目链接] 点击打开链接 [算法] 将所有质数染成1,合数染成2即可 [代码] #include<bits/stdc++.h> using namespace std; #define ...

  6. 一本通1623Sherlock and His Girlfriend

    1623:Sherlock and His Girlfriend 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:Codeforces Round ...

  7. CodeForces contest/776 A+B+C题解

    ICM Technex 2017 and Codeforces Round #400 (Div. 1 +Div.2,combined) A. A Serial Killer 谜一样的题意:每天从两个人 ...

  8. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) A map B贪心 C思路前缀

    A. A Serial Killer time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  9. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)

    前四题比较水,E我看出是欧拉函数傻逼题,但我傻逼不会,百度了下开始学,最后在加时的时候A掉了 AC:ABCDE Rank:182 Rating:2193+34->2227 终于橙了,不知道能待几 ...

随机推荐

  1. [Qt] 项处理组件

                             项(Item):一个项存储了文字.文字的格式.自定义数据等. 1.项视图(Item View) 针对一个数据模型,可能有不同的展示需求,如文件夹中图片 ...

  2. Linux下Shell实现服务器IP监测

    实验室有一个服务器放在机房,装的是Ubuntu Server,IP为自动分配,因此一旦IP有变化就无法远程操作,必须去机房记录新的IP.学了几天Shell之后想,是不是可以定时检测其IP的变化,一旦有 ...

  3. Linux压力测试软件Stress安装及使用指南2

    stress工具使用指南和结果分析 Linux压力测试软件Stress安装及使用指南     一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高 ...

  4. stress工具使用指南和结果分析(好好好测试通过)

    stress工具使用指南和结果分析 佛心看世界关注 0.1152019.05.13 09:17:35字数 547阅读 1,112 #stress `stress' imposes certain ty ...

  5. 用urllib库几行代码实现最简单爬虫

    """ 使用urllib.request()请求一个网页内容,并且把内容打印出来. """ from urllib import reque ...

  6. node.js module初步理解-(转载)

    在开发一个复杂的应用程序的时候,我们需要把各个功能拆分.封装到不同的文件,在需要的时候引用该文件.没人会写一个几万行代码的文件,这样在可读性.复用性和维护性上都很差,几乎所有的编程语言都有自己的模块组 ...

  7. OpenStack挂载ISO镜像解决

    OpenStack挂载ISO镜像解决 Summary 本次在OpenStack平台上进行,基于kvm,挂载iso镜像到OpenStack虚拟机中. 1.针对linux: 上传所需要挂载的iso镜像(必 ...

  8. 基于 IntersectionObserver 实现一个组件的曝光监控

    我们在产品推广过程中,经常需要判断用户是否对某个模块感兴趣.那么就需要获取该模块的曝光量和用户对该模块的点击量,若点击量/曝光量越高,说明该模块越有吸引力. 那么如何知道模块对用户是否曝光了呢?之前我 ...

  9. Supervisor 开始

    Supervisor 是 Linux/Unix 操作系统上的进程管理工具.本文介绍了于 Ubuntu 18 上如何使用 Supervisor 开机启动.保活守护自己的服务进程. 安装 建议系统方式安装 ...

  10. OpenCV读写图像文件解析

    OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...