• --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);
    
        }
    }
    

      

     
  • 相关阅读:
    STL unique使用问题
    自定义使用动态内存的类模板
    自定义类模板 重载<<遇到的问题
    [HDU 1882]--Strange Billboard(位运算+枚举)
    动态规划---最长上升子序列问题(O(nlogn),O(n^2))
    由结构体成员地址计算结构体地址——list_entry()原理详解
    不同意义的new和delete
    new[] 到底做了什么?
    lambda表达式与bind函数
    C++之可调用对象
  • 原文地址:https://www.cnblogs.com/lovelystone/p/4698702.html
Copyright © 2020-2023  润新知