夏洛克和他的女朋友

夏洛克有了一个新女友(这太不像他了!)。

情人节到了,他想送给女友一些珠宝当做礼物。

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

华生挑战夏洛克,让他给这些珠宝染色,使得一件珠宝的价格是另一件珠宝的价格的质因子时,两件珠宝的颜色不同。

并且,华生要求他使用的颜色数尽可能少。

请帮助夏洛克完成这个简单的任务。

输入格式
只有一行一个整数 n,表示珠宝件数。

输出格式
第一行一个整数 k,表示所使用的颜色数;

第二行 n 个整数,表示第 1 到第 n 件珠宝被染成的颜色。

若有多种答案,输出任意一种。

请用 1 到 k 表示你用到的颜色。

数据范围
1≤n≤1051≤n≤10^51≤n≤105
输入样例1:
3
输出样例1:
2
1 1 2
输入样例2:
4
输出样例2:
2
2 1 1 2

题解:

开始一看以为是一个图论的染色问题,发现好难,但是这道题是有特殊性的。我们不同的染色之间一定是存在于质数和合数之间的。那么分成质数和合数两个集合,分别连边那么显然这就是一个二分图,所以我们颜色最多就只用两种颜色就可以了。质数一种,合数一种。

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int prime[N],cnt;
bool isprime[N];
int n;
void init()
{for(int i=2;i<=N;i++){if(!isprime[i]) prime[cnt++]=i;for(int j=0;prime[j]*i<=N;j++){isprime[i*prime[j]]=1;if(i%prime[j]==0) break;}}
}
int main()
{init();int n; cin>>n;if(n==2){cout<<1<<endl;printf("1 1\n");}else if(n==1){cout<<1<<endl;printf("1\n");}else{cout<<2<<endl;for(int i=2;i<=n+1;i++){if(isprime[i]) printf("%d ",2);else printf("%d ",1);}puts("");}
}

质数——夏洛克和他的女朋友相关推荐

  1. AcWing1293. 夏洛克和他的女朋友

    1293. 夏洛克和他的女朋友 题目 提交记录 讨论 题解 视频讲解 夏洛克有了一个新女友(这太不像他了!). 情人节到了,他想送给女友一些珠宝当做礼物. 他买了 nn 件珠宝,第 ii 件的价值是  ...

  2. 夏洛克和他的女朋友(隐藏质数筛)

    原题链接 夏洛克有了一个新女友(这太不像他了!). 情人节到了,他想送给女友一些珠宝当做礼物. 他买了 n 件珠宝,第 i 件的价值是 i+1,也就是说,珠宝的价值分别为 2,3,-,n+1. 华生挑 ...

  3. AcWing 1293. 夏洛克和他的女朋友(思维 欧拉筛 图论)

    夏洛克有了一个新女友(这太不像他了!). 情人节到了,他想送给女友一些珠宝当做礼物. 他买了 nn 件珠宝,第 ii 件的价值是 i+1i+1,也就是说,珠宝的价值分别为 2,3,-,n+12,3,- ...

  4. AcWing 1293. 夏洛克和他的女朋友

    一.题目链接 二.思路 数据范围:1≤n≤1051 \le n \le 10^51≤n≤105 根据题意,把具有题目这种关系看做是一条边,可以发现,这条边必然是一个质数连向一个合数,保证这条边的两端颜 ...

  5. AcWing 1293. 夏洛克和他的女朋友 二分图

    题 是一个二分图染色. 质数不是质数的质因子,因为质数不会有因子,所以质数全是颜色1 合数不是合数的质因子,因为合数不"质",所以合数全都是颜色2 n小于3的时候只有1种颜色,其他 ...

  6. 1293. 夏洛克和他的女朋友【二分图】

    https://www.acwing.com/problem/content/1295/ 其实你会发现,质数和其合数必有一条边. 而质数之间无联系,合数之间也无联系.这就是一个二分图问题. 那么如果有 ...

  7. 夏洛克和他的女朋友—线性筛—逻辑

    输入样例1: 3 输出样例1: 2 1 1 2 输入样例2: 4 输出样例2: 2 2 1 1 2 1.一件珠宝的价格是另一件珠宝的价格的质因子时,两件珠宝的颜色不同,则等价于每一个合数与它的每一个质 ...

  8. 夏洛克和他的女朋友(AcWing 1293)

    题目链接:https://www.acwing.com/problem/content/description/1295/ 思路:质数填1 ,合数填2 #include<bits/stdc++. ...

  9. 质数,约数(数论) AcWing算法课

    SummarySummarySummary 质数的判定 : 1.试除法O(n)O(\sqrt{n})O(n​) 分解质因数 : 1.试除法O(n)O(\sqrt{n})O(n​) 2.当一系列数相乘( ...

最新文章

  1. Flink Pre-defined Timestamp Extractors / Watermark Emitters(预定义的时间戳提取/水位线发射器)...
  2. 【原创】DevExpress控件GridControl中的布局详解
  3. UA MATH524 复变函数13 补充:留数计算的例题
  4. 【揭秘】12306是如何抗住几亿日活、百万级高并发的?
  5. Codeforces 1106F Lunar New Year and a Recursive Sequence (线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
  6. JS实现的ajax发送数据重复
  7. ctf 监听端口_从一道ctf题目学到的绕过长度执行命令姿势 - 华域联盟|chu
  8. Android UI开发第四十篇——ScrollTricks介绍
  9. [Servletamp;JSP] 从JSP到Servlet
  10. 提升效率Mysql函数(function)|存储过程(procedure)
  11. 使用病毒数据库离线更新包
  12. Firewall常用
  13. flash AS3常用公式
  14. Hoodoop-MapReduce学习
  15. 长篇连载,人生30年(六):大结局!
  16. DBeaver导出结果集为CSV文件,数据用引号括起来
  17. 《Cluster Contrast for Unsupervised Person Re-Identification》论文阅读
  18. linux点歌机硬盘,自己动手给KTV点歌机换大硬盘
  19. 【附源码】Python计算机毕业设计码码科技公司招投标管理系统
  20. 六旋翼农用喷药、航拍功能无人机设计

热门文章

  1. 一个机器人位于m x n网格的左上角达到网格的右下角,有多少条不同的路径?
  2. Linux实现剪刀石头布游戏,Python剪刀石头布游戏
  3. 三国志战略版:Daniel_S8军争地利_刘张开荒实录三-至开七
  4. 第十三周 任务一
  5. Android实现真心话大冒险App(多线程,音乐播放)
  6. 宜明昂科在港交所递表:2021年亏损翻倍,过往融资额存在夸大情形
  7. 博士申请 | 美国范德堡大学NDS实验室招收数据挖掘/机器学习全奖博士生
  8. 2021自动化保研夏令营汇总
  9. 汇编语言——跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP
  10. 3月18日云栖精选夜读 | 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!...