算法提高之夏洛克和他的女朋友

算法提高之夏洛克和他的女朋友

  • 核心思想:筛质数

    • 因为质因子与其合数不能为同一个颜色
    • 所以将质数分一组 合数分一组 那么一定符合要求
    • 结果颜色数量<=2:在n<=2时为1种颜色 >2时为2种颜色
cpp 复制代码
  #include <iostream>
  #include <cstring>
  #include <algorithm>
  
  using namespace std;
  const int N = 100010;
  
  int prime[N],cnt;
  bool st[N];
  
  void get_prime(int n)
  {
      for(int i=2;i<=n;i++)
      {
          if(!st[i]) prime[cnt++] = i;
          for(int j=0;prime[j] * i <= n;j++)
          {
              st[prime[j]*i] = true;
              if(i % prime[j] == 0) break; 
          }
      }
  }
  
  int main()
  {
      int n;
      cin>>n;
      get_prime(n+1);
      if(n<=2) cout<<1<<endl;
      else cout<<2<<endl;
      for(int i=2;i<=n+1;i++)
      {
          if(st[i]) cout<<"2 ";
          else cout<<"1 ";
      }
  }
相关推荐
剪一朵云爱着3 小时前
力扣面试题 17.05. 字母与数字
算法·leetcode
虾球xz4 小时前
CppCon 2016 学习:GAME ENGINE USING C++11
大数据·开发语言·c++·学习
虾球xz4 小时前
CppCon 2016 学习:fixed_point Library
开发语言·c++·学习
code喵喵4 小时前
八种数据结构简介
数据结构·算法·推荐算法
HaiQinyanAN4 小时前
【学习笔记】nlohmannjson&&cjson
c++·笔记·学习·json
C语言小火车4 小时前
【C语言】银行账户管理系统丨源码+解析
c语言·c++·算法·课程设计
wen__xvn5 小时前
九日集训第三天
数据结构·算法·leetcode
dying_man5 小时前
LeetCode--33.搜索旋转排序数组
算法·leetcode
东方芷兰5 小时前
Leetcode 刷题记录 17 —— 堆
java·c++·b树·算法·leetcode·职场和发展
lzb_kkk5 小时前
【MFC】编辑框、下拉框、列表控件
c语言·开发语言·c++·mfc·1024程序员节