hdu5339

1311 단어
링크:클릭하여 링크 열기
제목: n개수와 a를 제시하고 n개수에서 c1, c2......를 추출한다.a mod c1 mod c2 mod 충족...=0 설립 시 최소한 몇 개의 수를 취해야 한다
코드:
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int b[50],temp[50];
int cmp(int a,int b){
    return a>b;
}
int main(){
    int n,a,t,i,j,k,cur,num,sum,minn,sign;
    scanf("%d",&t);
    while(t--){
    scanf("%d%d",&n,&a);
    sign=0;
    for(i=0;i<n;i++)
    scanf("%d",&b[i]);
    minn=99999999;
    sum=1<<n;
    sort(b,b+n,cmp);            //                  
    for(i=1;i<sum;i++){         //        ,      
       j=i;k=cur=0;num=a;
       while(j){                //       ,
       if(j&1)temp[cur++]=b[k]; //       http://blog.csdn.net/stay_accept/article/details/47204619
       j>>=1;k++;
       }
       if(cur>=minn)            //            
       continue;
//       for(j=0;j<cur;j++)
//       cout<<temp[j]<<" ";
//       cout<<endl;
       for(j=0;j<cur;j++)
       num%=temp[j];
       if(num==0){
       minn=cur;
       sign=1;
       }
    }
    if(sign)
    printf("%d
",minn); else printf("-1
"); } return 0; }

 
 
 

좋은 웹페이지 즐겨찾기