D.Factor
题目描述
你有一个集合 ,和具有
个正整数的数组
. 最初,集合
为空(不包含任一元素)。你将按照以下方式填充集合
:
- 以此枚举数组 a 中的每个元素。
- 对于数组中的第 i 个元素
,生成
的因子集合
。如果一个集合
被称为是
的因子集合,当且仅当
的每个因子都在集合
内,且集合
的每个元素都是
的因子。
请你求出集合 的大小,即
。
输入描述
第一行有一个正整数 。
第二行有 n 个正整数 。
输出描述
输出一个整数,表示集合 S 的大小。
样例
输入:
3
1 2 3输出:
3
思路:
类似于埃氏筛的思路,找这个数是不是给定的n个数的因子。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6+10;
int vis[N];
int main()
{int n;cin >> n;for(int i = 0;i < n;i++){int x;cin >> x;vis[x] = 1;}int ans = 0;for(int i = 1;i <= 1e6;i++){for(int j = i;j <= 1e6;j += i){if(vis[j]){ans++;break;}}}cout << ans;
}