zoukankan      html  css  js  c++  java
  • 取模(mod)

    取模(mod)

    【题目描述】

      有一个整数a和n个整数b_1, …, b_n。在这些数中选出若干个数并重新排列,得到c_1,…, c_r。我们想保证a mod c_1 mod c_2 mod … mod c_r=0。请你得出最小的r,也就是最少要选择多少个数字。如果无解,请输出-1.

    【输入说明】

      输入文件的第一行有一个正整数T,表示数据组数。

      接下去有T组数据,每组数据的第一行有两个正整数n和a.

      第二行有n个正整数b_1, …, b_n.

    【输出说明】

      一行,输出答案。

    【样例输入】

      2

      2 9

      2 7

      2 9

      6 7

    【样例输出】

      2

      -1

    【数据范围】

      对于40%的数据,n<=8

      对于100%的数据,T<=5,n<=20,1 <=a <=10^6,b_i<=10^6

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    #define M 100005
    int T,n,a,c[25],ans;
    int Dfs(int x,int m,int num)
    {
        if(m==0)
        {
            ans=min(ans,num);
            return 0;
        }
        for(int i=x;i>=1;i--)
            if(m>=c[i])
                Dfs(i,m%c[i],num+1);
    }
    int main()
    {  
    //    freopen("mod.in","r",stdin);
    //    freopen("mod.out","w",stdout);
        scanf("%d",&T);
        while(T--)
        {
            memset(c,0,sizeof(c));
            scanf("%d%d",&n,&a);
            for(int i=1;i<=n;i++) scanf("%d",&c[i]);
            sort(c+1,c+n+1);
            ans=25;
            Dfs(n,a,0);
            if(ans==25) ans=-1;
            printf("%d
    ",ans);
        }
        fclose(stdin);
        fclose(stdout);
        return 0;
    }
  • 相关阅读:
    软工实践
    福大软工 · 最终作业
    福大软工 · 第十二次作业
    Beta冲刺(7/7)
    Beta冲刺(5/7)
    Beta 冲刺(6/7)
    Beta冲刺 (4/7)
    Beta冲刺 (3/7)
    Beta冲刺 (2/7)
    Beta 冲刺(1/7)
  • 原文地址:https://www.cnblogs.com/xiaoningmeng/p/6038193.html
Copyright © 2011-2022 走看看