[ABC191F] GCD or MIN 题解
linkqwq
题目大意
给定
题目解法
只有「删除
「删除
我们先考虑一个弱化版问题,可以「删除
我们再考虑加上了「不能删除
我们考虑弱化版问题中一个数
具体而言,用
#include<bits/stdc++.h>
using namespace std;
const int N=2023, inf=1e9;
int n, a[N], m=inf, ans;
map<int,int> g;
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i=1; i<=n; ++i) {
cin >> a[i];
m=min(a[i],m);
}
for(int i=1; i<=n; ++i)
for(int j=1; j*j<=a[i]; ++j)
if(a[i]%j==0) {
g[j]=__gcd(g[j],a[i]);
g[a[i]/j]=__gcd(g[a[i]/j],a[i]);
}
map<int,int>::iterator it;
for(it=g.begin(); it!=g.end(); ++it)
if(it->first<=m) ans+=(it->first==it->second);
cout << ans;
return 0;
}