集合中的质数(容斥原理&&位操作)

题目描述

给出一个集合和一个数m。

集合里面有n个质数。

请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。

输入描述:

第一行两个正整数 n 和 m 。
第二行n个正整数,分别为集合中的质数。

输出描述:

输出一个整数,表示符合要求的正整数的个数。
示例1

输入

3 37
5 7 13

输出

13

备注:

对于100%的数据,有n<=20,m为有符号64位正整数,集合内质数<=1000000000
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAXN 1000005
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
typedef long long ll;

int a[25];

int main()
{
	ll n,m,ans=0;
	scanf("%lld%lld",&n,&m);
	for (int i=0; i>j)&1)//每一位取,或不取
			{
				t++;
				ss/=a[j];
			}
		//cout<

你可能感兴趣的:(集合中的质数(容斥原理&&位操作))