zoukankan      html  css  js  c++  java
  • Codeforces 1332B

    Description
    题目大意是给定不超过1000个和数(均小于1000)。用m(m<=11)颜色染色。其中染上相同颜色的数必定是具有大于1的公约数。

    思路

    从小到大用素数把含有该素数的数染成相同颜色。由于小于1000,因此前11个素数必定可以覆盖完所有的数。因为第11个素数和第12个素数相乘就已经大于1000了。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N = 1e3+10;
    #define inf 0x3f3f3f3f
     
    int arr[N];
    int c[N];
    bool vis[N];
     
    vector<int> prime;
     
    int main() {
        ios::sync_with_stdio(false);
        for(int i = 2; i <= 1000; i++) {
            if(vis[i]) continue;
            prime.push_back(i);
            for(int j = 2 * i; j <= 1000; j+=i) {
                vis[j] = 1;
            }
        }
        int t;
        cin >> t;
        while(t--) {
            memset(c, 0, sizeof c);
            int n;
            cin >> n;
            for(int i = 0; i < n; i++) {
                cin >> arr[i];
            }
            int cnt = 1;
            for(auto p : prime) {
                bool ok = false;
                for(int i = 0; i < n; i++) {
                    if(c[i]) continue;
                    if(arr[i] % p == 0) {
                        c[i] = cnt;
                        ok = true;
                    }
                }
                if(ok) cnt++;
            }
            cout << cnt - 1 << endl;
            for(int i = 0; i < n; i++) cout << c[i] << " ";
            cout << endl;
        }
        
    }
    
  • 相关阅读:
    Mongodb副本集集群搭建
    Mongodb分片副本集集群搭建
    python-字符串格式化
    python -序列化
    python-装饰器
    Python-内置函数
    CPU性能测试
    python-生成随机字符
    python-布尔值
    python学习-day3
  • 原文地址:https://www.cnblogs.com/limil/p/12697365.html
Copyright © 2011-2022 走看看