zoukankan      html  css  js  c++  java
  • [CF776B] Sherlock and His Girlfriend

    Description

    给定 (n) 个数字,分别为 (2,3,...,n+1),要对每个数字染色,使得一个数字是另一个数字的质因子时,两个数字的颜色不同,最小化使用的颜色数。求染色方案。

    Solution

    首先证明一定可以用两种颜色染完。不妨用第一种颜色染所有的质数,用第二种颜色染所有的非质数,显然满足条件。

    而当不存在任意两个数使得一个数是另一个数的质因子时,可以用一种颜色染完所有的数。由于数字是 (2,3,4,...,n+1),这种情况会发生,当且仅当 (n le 2)

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long 
    const int N = 1000005;
    
    int a[N];
    
    signed main()
    {
        //ios::sync_with_stdio(false);
    
        int n;
        cin>>n;
        if(n<=2)
        {
            cout<<1<<endl;
            for(int i=1;i<=n;i++) cout<<1<<" ";
        }
        else
        {
            cout<<2<<endl;
            for(int i=2;i<=n+1;i++)
            {
                if(a[i]==0)
                {
                    cout<<1<<" ";
                    for(int j=i+i;j<=n+1;j+=i)
                    {
                        a[j]=1;
                    }
                }
                else
                {
                    cout<<2<<" ";
                }
            }
        }
        system("pause");
    }
    
  • 相关阅读:
    django 设置局域网内访问项目
    104. Maximum Depth of Binary Tree
    multi dimension array
    Longest Plindrome Subarray
    BlockQueue
    H2O
    HoppingIterator
    midStack
    Reverse Words in a String II
    public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace)
  • 原文地址:https://www.cnblogs.com/mollnn/p/13717638.html
Copyright © 2011-2022 走看看