zoukankan      html  css  js  c++  java
  • CF1419E Decryption(贪心+set维护)

    题意:

    给出一个正整数n,要求将它的所有不同的因子排成环,使得相邻互质的数最少,输出方案。

    题解:

    用set维护这个过程,贪心的做一下就好了。比赛的时候D2写歪了一直没看这题,泪目。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e5+100;
    int t,n;
    int main () {
        scanf("%d",&t);
        while (t--) {
            scanf("%d",&n);
            set<int> st;
            st.insert(n);
            for (int i=2;i<=sqrt(n);i++) {
                if (n%i) continue;
                st.insert(i);
                st.insert(n/i);
            }
            //for (auto it=st.begin();it!=st.end();it++) printf("%d ",*it);
            vector<int> ans;
            ans.push_back(*st.begin());
            st.erase(*st.begin());
            int len=st.size();
            for (int i=1;i<=len;i++) {
                set<int> ::iterator it;
                int f=0;
                for (it=st.begin();it!=st.end();it++)
                    if (__gcd(*it,ans.back())>1) {
                        f=1;break;
                    }
                if (f) {
                    ans.push_back(*it);
                    st.erase(*it);
                }
                else {
                    ans.push_back(*st.begin());
                    st.erase(*st.begin());
                }
            }
            int cnt=0;
            for (int i=1;i<ans.size();i++) if (__gcd(ans[i],ans[i-1])==1) cnt++;
            if (__gcd(ans[0],ans.back())==1) cnt++;
            for (int v:ans) printf("%d ",v);
            printf("%d
    ",cnt);
            printf("
    ");
        }
    }
  • 相关阅读:
    LINQ -2015-04-27
    wireshark的安装
    c#中的classes和objects一些知识【1】
    初学C#,用vs去开始hello world!
    file_get_contents HTTP request failed! Internal Server Error
    验证码二(验证码使用)
    接口调用 POST
    接口调用 GET方式
    百度地图改标注样式
    Linux-常用命令
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13723579.html
Copyright © 2011-2022 走看看