提交时间:2026-10-29 13:04:34
运行 ID: 43367
#include<bits/stdc++.h> using namespace std; #define int long long #define mp make_pair int t,n,A,a[25],vis[25],ans; pair<int,int> check(){ int tt=A,p=0; for(int i=n;i>=1;i--){ if(vis[i]){ tt%=a[i]; p++; } } return mp(tt,p); } void dfs(int nw){ if(nw>n){ pair<int,int>res=check(); if(res.first==0)ans=min(ans,res.second); return; } vis[nw]=1; dfs(nw+1); vis[nw]=0; dfs(nw+1); } signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n>>A; ans=LLONG_MAX; for(int i=1;i<=n;i++){cin>>a[i];vis[i]=0;} sort(a+1,a+n+1); dfs(1); if(ans==LLONG_MAX)cout<<-1<<"\n"; else cout<<ans<<"\n"; } return 0; } /* 思路: 1:搜索 2:先mod大的,再mod小的(不让大的失去意义) */