题目链接
https://www.nowcoder.com/acm/contest/39/E
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<set>
#include<map>
#define ll long long
using namespace std;
const int INF = ( ) + ;
const ll maxn = ;
ll a[];
int main()
{
ll n,m;
scanf("%lld%lld",&n,&m);
for(int i=;i<=n;i++)
scanf("%lld",&a[i]);
ll ans=;
sort(a+,a++n);
int len = unique(a+,a++n) - (a+);
ll s = <<len;
for(int i=;i<s;i++)
{
int cnt=;
int tmp = i;
ll mul=;
for(int j=;j<len;j++)
{
int bit = (tmp>>j)&;
if(bit){
cnt++;
mul*=a[j+];
}
}
if(cnt%)ans += m/mul;
else ans -= m/mul;
}
printf("%lld",ans);
}