zoukankan      html  css  js  c++  java
  • --bestcoder

    Untitled

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 774    Accepted Submission(s): 423


    Problem Description
    There is an integer a and n integers b1,,bn. After selecting some numbers from b1,,bn in any order, say c1,,cr, we want to make sure that a mod c1 mod c2 mod mod cr=0 (i.e., a will become the remainder divided by ci each time, and at the end, we want a to become 0). Please determine the minimum value of r. If the goal cannot be achieved, print 1 instead.
     
    Input
    The first line contains one integer T5, which represents the number of testcases. 

    For each testcase, there are two lines:

    1. The first line contains two integers n and a (1n20,1a106).

    2. The second line contains n integers b1,,bn (1in,1bi106).
     
    Output
    Print T answers in T lines.
     
    Sample Input
    2 2 9 2 7 2 9 6 7
     
    Sample Output
    2 -1
     
    不知道为什么必须判断比他大的数啊,老是超时,判断了就不超时了。
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    
    int t ;
    int n,a;
    int x[25];
    
    bool cmp(int a,int b){
        return a >b;
    }
    
    int dfs(int u,int depth){
    
        if(u == 0)return depth;
    
        int minn  = n+1;
    
        for(int i = depth;i<n;i++){
            int z = u>=x[i]?dfs(u % x[i],depth+1):n+1;
            if( z < minn)minn = z;
    
        }
        return minn;
    }
    
    int main(){
    
    
    
        int t;
        scanf("%d",&t);
    
        while(t--){
    
    
        scanf("%d%d",&n,&a);
    
        for(int i = 0;i<n;i++){
    
            scanf("%d",&x[i]);
        }
    
        sort(x,x+n,cmp);
    
        int minn = n+1;
    
        for(int i = 0;i<n;i++){
    
            int z = a >= x[i]?dfs(a % x[i],1):n+1;
    
            if( z < minn) minn = z;
        }
    
        printf("%d
    ",minn == n+1?-1:minn);
    
        }
    }
    

      

     
  • 相关阅读:
    第一讲小结(位运算)
    新学期开始
    前缀表达式-怎样用空格分隔一个字符串
    计概期末前的小小总结
    动规作业-求数组不相邻元素之和的最大值
    网格-递归作业2-放苹果问题
    1025 数的划分(搜索和递推方法)
    网格-递归作业 集合里的乘法
    网格-递归作业 城堡问题
    去先导零的一个大坑
  • 原文地址:https://www.cnblogs.com/lovelystone/p/4698702.html
Copyright © 2011-2022 走看看