Codeforces Round #400 (Div. 1 + Div. 2, combined)B.Sherlock and his girlfriend【预处理素数+思维】
来源:互联网 发布:简单视频编辑软件 编辑:程序博客网 时间:2024/05/04 13:12
Sherlock has a new girlfriend (so unlike him!). Valentine's day is coming and he wants to gift her some jewelry.
He bought n pieces of jewelry. The i-th piece has price equal to i + 1, that is, the prices of the jewelry are 2, 3, 4, ... n + 1.
Watson gave Sherlock a challenge to color these jewelry pieces such that two pieces don't have the same color if the price of one piece is a prime divisor of the price of the other piece. Also, Watson asked him to minimize the number of different colors used.
Help Sherlock complete this trivial task.
The only line contains single integer n (1 ≤ n ≤ 100000) — the number of jewelry pieces.
The first line of output should contain a single integer k, the minimum number of colors that can be used to color the pieces of jewelry with the given constraints.
The next line should consist of n space-separated integers (between 1 and k) that specify the color of each piece in the order of increasing price.
If there are multiple ways to color the pieces using k colors, you can output any of them.
3
21 1 2
4
22 1 1 2
In the first input, the colors for first, second and third pieces of jewelry having respective prices 2, 3 and 4 are 1, 1 and 2 respectively.
In this case, as 2 is a prime divisor of 4, colors of jewelry having prices 2 and 4 must be distinct.
题目大意:
第i个数表示i+1的价值,其中价值为x和价值为y的如果x是y的因子,那么两个位子的颜色不能相同。
问用最少的颜色来涂所有的格子,怎样分配。
思路:
#include<stdio.h>#include<string.h>using namespace std;int vis[10000800];int ans[10000800];int main(){ int n; while(~scanf("%d",&n)) { if(n<3) { printf("1\n"); for(int i=1;i<=n;i++)printf("1 "); printf("\n"); } else { memset(ans,0,sizeof(ans)); memset(vis,0,sizeof(vis)); for(int i=2;i<=100005;i++) { if(!vis[i]) { ans[i]=1; for(int j=2;j*i<=100005;j++) { vis[i*j]=1; } } } printf("2\n"); for(int i=2;i<=n+1;i++) { if(ans[i]==1)printf("1 "); else printf("2 "); } printf("\n"); } }}
预处理出1e5之内的所有素数,将素数处理过程中的基数设定为颜色1,其他的数字设定为颜色2即可。
那么就用两种颜色就能完成这个目的。
Ac代码:
- Codeforces Round #400 (Div. 1 + Div. 2, combined)B.Sherlock and his girlfriend【预处理素数+思维】
- Codeforces Round #400 (Div. 1 + Div. 2, combined) B. Sherlock and his girlfriend 素数筛法+贪心
- Codeforces Round #400 (Div. 1 + Div. 2, combined) 776B Sherlock and his girlfriend
- Codeforces Round #400 B.Sherlock and his girlfriend
- 【CodeForces 776B】 Sherlock and his girlfriend (求素数)
- 【codeforces 776B】Sherlock and his girlfriend
- Codeforces 776B-Sherlock and his girlfriend
- CodeForces 776B Sherlock and his girlfriend
- Sherlock and his girlfriend (Codeforces-776B)
- Codeforces Round #399 (Div. 1 + Div. 2, combined)C. Jon Snow and his Favourite Number
- B. Sherlock and his girlfriend
- B. Sherlock and his girlfriend
- B. Sherlock and his girlfriend
- ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)A+B
- Codeforces Round #400 (Div. 1 + Div. 2, combined) 776F. Sherlock's bet to Moriarty(待翻译)
- Codeforces Round #397(Div. 1 + Div. 2 combined)D. Artsem and Saunders【思维+乱搞】
- 【前缀和 && 思维转换】ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)Molly's Chemicals
- Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field(思维)
- C# 压缩
- MyBatis 源码分析——生成Statement接口实例
- jsPatch
- 5-1 最大子列和问题 (20分)
- 使用redis部署集群
- Codeforces Round #400 (Div. 1 + Div. 2, combined)B.Sherlock and his girlfriend【预处理素数+思维】
- Cocos Creator之向量旋转角度计算绘制直线运动轨迹
- 二级指针
- 实现一个简单的手机拍照效果
- webcron 定时任务管理系统
- iOS-UIStatusBar详细总结
- redis中密码设置
- CentOS安装与配置Mysql数据库
- Android屏幕直播方案