zoukankan      html  css  js  c++  java
  • 分成互质组

    分成互质组

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1221


    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?

    【输入】

    第一行是一个正整数n。1 <= n <= 10。

    第二行是n个不大于10000的正整数。

     

    【输出】

    一个正整数,即最少需要的组数。

    【输入样例】

    6
    14 20 33 117 143 175
    

    【输出样例】

    3
    题解:一组中的数两两互质,则任意一个数与其中两数的积互质
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    long long f[11];
    int n,minn=10,a[11];
    long long gcd(long long a,long long b)
    {
        if(!b)return a;
        return gcd(b,a%b);
    }
    void s(int i,int k){
        if(i==n+1)
        {
            if(k<minn)minn=k;
            return ;
        }
        for(int j=1;j<=k;j++)
        {
            if(gcd(f[j],a[i])==1)
            {
                f[j]*=a[i];
                s(i+1,k);
                f[j]/=a[i];
            }
        }
        f[k+1]=a[i];
        s(i+1,k+1);
        f[k+1]=0;
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<11;i++)f[i]=1;
        s(1,1);
        cout<<minn<<endl;
    }
  • 相关阅读:
    精益软件度量——实践者的观察与思考读书笔记三
    JS数组操作
    webpack开发环境所需要的插件
    vim 操作
    关于http的npm包
    闭包模式
    一般系统架构的设计
    工作心得
    UML知识
    express源码剖析4
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7630014.html
Copyright © 2011-2022 走看看