Sherlock and His Girlfriend题解
题目描述
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题解的更多相关文章
- 「CF779B」「LOJ#10201.」「一本通 6.2 练习 4」Sherlock and His Girlfriend(埃氏筛
题目描述 原题来自:Codeforces Round #400 B. Sherlock 有了一个新女友(这太不像他了!).情人节到了,他想送给女友一些珠宝当做礼物. 他买了 nnn 件珠宝.第 iii ...
- CF776B Sherlock and his girlfriend
题目地址 题目链接 题解 这题很有意思啊qwq.本来是写算出每个数的质约数的,然后写到一半发现,质约数互相不影响,有质约数的数肯定是合数. 所以合数染一种色,质数染一种色就好 #include < ...
- Sherlock and His Girlfriend(信息学奥赛一本通 1623)
[题目描述] 原题来自:Codeforces Round #400 B. Sherlock 有了一个新女友(这太不像他了!).情人节到了,他想送给女友一些珠宝当做礼物. 他买了 n 件珠宝.第 i 件 ...
- Codeforces_776B: Sherlock and his girlfriend(素数筛)
题目链接 题意:对2~n+1染色,一个数不能与其素因子同色. 故而只需两种颜色即可,素数染1,合数染2便可满足条件 #include<bits/stdc++.h> using namesp ...
- 【Codeforces 776B】Sherlock and his girlfriend
[题目链接] 点击打开链接 [算法] 将所有质数染成1,合数染成2即可 [代码] #include<bits/stdc++.h> using namespace std; #define ...
- 一本通1623Sherlock and His Girlfriend
1623:Sherlock and His Girlfriend 时间限制: 1000 ms 内存限制: 524288 KB [题目描述] 原题来自:Codeforces Round ...
- CodeForces contest/776 A+B+C题解
ICM Technex 2017 and Codeforces Round #400 (Div. 1 +Div.2,combined) A. A Serial Killer 谜一样的题意:每天从两个人 ...
- 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 ...
- ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)
前四题比较水,E我看出是欧拉函数傻逼题,但我傻逼不会,百度了下开始学,最后在加时的时候A掉了 AC:ABCDE Rank:182 Rating:2193+34->2227 终于橙了,不知道能待几 ...
随机推荐
- [bug] Maven [WARNING] 'parent.relativePath' of POM
参考 https://blog.csdn.net/simajinxiu/article/details/86667894
- 阿里云上安装 OpenStack 是什么体验
阿里云上跑火车(安装 OpenStack Train 版本),猜猜最终花了多少钱? 前言 前面给大家提供了用虚拟机安装 OpenStack 的镜像,虽然已经很简便了,但还是略显笨重.一来镜像文件比较大 ...
- Linux下获取当前的目录,需执行以下命令: $(cd `dirname $0`;pwd)
Linux下获取当前的目录,需执行以下命令: $(cd `dirname $0`;pwd) 其中, dirname $0,取得当前执行的脚本文件的父目录 cd `dirname $0` ...
- RHEL高级磁盘管理—Stratis
2. Stratis 本地存储管理工具,通过Stratis可以便捷的使用Thin Provisioning.Snapshots.Pool-based的管理和监控等高级存储功能. Stratis 基于x ...
- 烽火SATA SSD DSS200-B
烽火SATA SSD DSS200-B 运营商用户 > 产品与解决方案 > 产品 烽火SATA SSD DSS200-B 烽火通信 DSS200-B 2.5" SATA SSD ...
- mysql基础之查询缓存、存储引擎
一.查询缓存 "查询缓存",就是将查询的结果缓存下载,如果查询语句完全相同,则直接返回缓存中的结果. 如果应用程序在某个场景中,需要经常执行大量的相同的查询,而且查询出的数据不会经 ...
- dd命令详解-(转自dkcndk)
Linux-dd命令详解 dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.名称: dd 使用权限: 所有使用者dd 这个指令在 ...
- PHP8开启PHPStorm + Xdebug3
下载Xdebug 需要下载对应php版本xdebug 否则对加载xdebug失败 https://xdebug.org/download 我的是PHP版本 为php8.0.3-nts-x64 安装xd ...
- Ubuntu 20.04 Docker 安装并配置
前言 Docker 的使用能极大地方便我们的开发,减少环境搭建,依赖安装等繁琐且容易出错的问题. 安装 Docker Ubuntu 20.04 官方 apt 源中就有 Docker,我们可以直接通过 ...
- FPGA与ASIC:它们之间的区别以及使用哪一种?
FPGA与ASIC:它们之间的区别以及使用哪一种? FPGA Vs ASIC: Differences Between Them And Which One To Use? VL82C486 Sing ...