给定一个数组,其中含有n个整数,还给定一个整数X,可以从n个数中选取任意个数的元素,使这些元素的最小公倍数为X,如果存在则返回Possible,否则返回Impossible.
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <iomanip>
#include <string>
#include <string.h>
#include <math.h>
#include <queue>
#include <map>
#include <stack>
#include <vector>
#include <iostream>
using namespace std;
# define LL long long int
class LCMSetEasy
{
public:
LL gcd(LL a, LL b) { return a%b == 0 ? b : gcd(b,a%b);}
LL lcm(LL a, LL b) { return a * b / gcd(a, b);}
string include(vector <int> S, int x)
{
int i;
LL tar = 1;
for(i = 0; i < S.size(); i++)
{
if(x % S[i] == 0)
{
tar = lcm(tar, S[i]);
if(tar > x) return "Impossible";
}
}
if(tar == x) return "Possible";
return "Impossible";
}
};
int main()
{
LCMSetEasy test;
vector<int> vec;
vec.push_back(9788);
vec.push_back(8418);
vec.push_back(10);
vec.push_back(35);
vec.push_back(55);
vec.push_back(7250);
cout<<test.include(vec,37683800)<<endl;
return 0;
}