标签:int space for clu code 个数 long typedef btn
给出一个集合和一个数m。
集合里面有n个质数。
请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。
第一行两个正整数 n 和 m 。
第二行n个正整数,分别为集合中的质数。
输出一个整数,表示符合要求的正整数的个数。
对于100%的数据,有n<=20,m为有符号64位正整数,集合内质数<=1000000000
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 27; LL a[N], n, m, ans; void dfs(int p, int f, LL cur) {//递归枚举除数 if (p == n) return;//如果递归到头了 if (cur * a[p] <= m) {//如果还可以继续下去 ans += m / (a[p] * cur) * f; dfs(p + 1, -f, cur * a[p]); dfs(p + 1, f, cur); } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; sort(a, a + n);//排序,优先选择小的 dfs(0, 1, 1); cout << ans << endl; return 0; }
标签:int space for clu code 个数 long typedef btn
原文地址:https://www.cnblogs.com/HighLights/p/13320738.html