题意:
解法:
对a[]从小到大排序,
如果k>a[n],那么一定无解.
否则由更相减损术(即辗转相除法)能推出最后能凑出的数一定是gcd(a[])的倍数,
设g=gcd(a[]),如果k%g==0,那么有解,否则无解.
code:
#include <bits/stdc++.h>
#define int long long
#define PI pair<int,int>
using namespace std;
const int maxm=2e5+5;
int a[maxm];
int n,k;
void solve(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
if(k>a[n]){
cout<<"IMPOSSIBLE"<<endl;
return ;
}
int g=0;
for(int i=1;i<=n;i++){
g=__gcd(g,a[i]);
}
if(k%g==0){
cout<<"POSSIBLE"<<endl;
}else{
cout<<"IMPOSSIBLE"<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);
solve();
return 0;
}