BestCoder Round #49 ($) 1001 Untitled

网友投稿 248 2022-12-02

BestCoder Round #49 ($) 1001 Untitled

5339  Untitled

问题描述

有一个整数aa和nn个整数b_1, \ldots, b_nb1,…,bn。在这些数中选出若干个数并重新排列,得到c_1, \ldots, c_rc1,…,cr。我们想保证a \ mod \ c_1 \ mod \ c_2 \ mod \ldots \ mod \ c_r = 0a mod c1 mod c2 mod… mod cr=0。请你得出最小的rr,也就是最少要选择多少个数字。如果无解,请输出-1−1.

输入描述

输入文件的第一行有一个正整数 T \leq 5T≤5,表示数据组数。接下去有TT组数据,每组数据的第一行有两个正整数nn和aa (1 \leq n \leq 20, 1 \leq a \leq 10^{6}1≤n≤20,1≤a≤106).第二行有nn个正整数b_1, \ldots, b_nb1,…,bn (\forall 1\leq i \leq n, 1 \leq b_i \leq 10^{6}∀1≤i≤n,1≤bi≤106).

输出描述

输出TT行TT个数表示每次询问的答案。

输入样例

2 2 9 2 7 2 9 6 7

输出样例

2 -1

【思路】

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000"//C#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //C++#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define rep(i,j,k) for(int i=(int)j;i<(int)k;++i)#define per(i,j,k) for(int i=(int)j;i>(int)k;--i)#define lowbit(a) a&-a#define Max(a,b) a>b?a:b#define Min(a,b) a>b?b:a#define mem(a,b) memset(a,b,sizeof(a))typedef long long LL;typedef unsigned long long LLU;typedef double db;const int N=1e5;const int inf=0x3f3f3f3f;int dir4[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};int dir8[8][2]= {{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};int movv[5][2]= {{1,0},{0,1},{0,0},{-1,0},{0,-1}};inline LL read(){ int c=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-') f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){ c=c*10+ch-'0'; ch=getchar();} return c*f;}bool cmp(const int &x,const int &y){ return x>y;}int t,a,n,m;int num[N];int ans;void dfs(int m,int k,int d)///mod,长度,搜索深度{ if(m==0) { ans=d; return; } if(d>ans){ return ; } if(k>=n){ return; } dfs(m%num[k],k+1,d+1); dfs(m,k+1,d);}int main(){ t=read(); while(t--){ n=read(); a=read(); for(int i=0; i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Codeforces Round #147 (Div. 2)
下一篇:深入讲解Java Maven配置
相关文章

 发表评论

暂时没有评论,来抢沙发吧~