题目描述

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这种既不是质数又不是合数的情况;
}
}

最新文章

  1. linux中kvm的安装及快照管理
  2. .Net中DataAdapter批量插入和更新数据总结
  3. Openjudge计算概论-单词翻转
  4. 浅谈自我对git的初步认识
  5. DataGridView中的单元格提示错误信息
  6. SQL跨数据库复制表数据
  7. bash 读入文件
  8. S5PV210(TQ210)裸机编程
  9. 存储过程系列之存储过程具体操作过程及sql数据库调用
  10. SQL 语句中按照in语句原有的顺序进行排序
  11. ActivatedEventArgs.IsApplicationInstancePreserved 属性
  12. JS实现等比例缩放图片
  13. LeetCode题解 15题 第二篇
  14. python非转基因HTTP请求库--Requests: 让 HTTP 服务人类
  15. js alert(“”)弹框 自定义样式
  16. BPF漫谈
  17. 自建yum仓库,分别为网络源和本地源
  18. Oracle入门《Oracle介绍》第一章1-4 Oracle 用户管理
  19. iptables增加、删除、修改、查询、保存防火墙策略教程
  20. 白盒测试实践-day....

热门文章

  1. ocalhost kernel: [244840.301449] nf_conntrack: nf_conntrack: table full, dropping packet
  2. 013.Python的文件操作
  3. 003.Python数据类型转换
  4. stm32中关于NVIC_SetVectorTable函数使用的疑惑与理解
  5. 七牛云-上传、删除文件,工具类(Day49)
  6. [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
  7. Mybatis学习-GetMybatisInMyHead
  8. GO学习-(35) Go实现日志收集系统4
  9. 特斯拉Tesla Model 3整体架构解析(上)
  10. Django(56)Mixins工具集的使用