牛客练习赛8 E-集合中的质数 容斥原理

来源:互联网 发布:楼层 噪音 知乎 编辑:程序博客网 时间:2024/06/05 04:22

题目链接

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 longusing namespace std;const int INF = ( 2e9 ) + 2;const ll maxn = 1000000010;ll a[22];int main(){    ll n,m;    scanf("%lld%lld",&n,&m);    for(int i=1;i<=n;i++)    scanf("%lld",&a[i]);    ll ans=0;    sort(a+1,a+1+n);    int len = unique(a+1,a+1+n) - (a+1);    ll s = 1<<len;    for(int i=1;i<s;i++)    {        int cnt=0;        int tmp = i;        ll mul=1;        for(int j=0;j<len;j++)        {            int bit = (tmp>>j)&1;            if(bit){                cnt++;                mul*=a[j+1];            }        }        if(cnt%2)ans += m/mul;        else ans -= m/mul;    }    printf("%lld",ans);}