题意:给一串序列,求出序列中所有数的公因数的个数
思路:先用gcd求出最大公因数g,之后再求其因数的个数即可。对于一个数i
,若i*i <= g
,则i*i
也是g的因数
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 4e5+5;
const int inf = 0x3f3f3f3f;
ll n;
int main()
{
cin >> n;
ll g = 0, ans = 0, x;
for (int i = 0; i < n; i++) {
cin >> x;
g = __gcd(g, x);
}
for (ll i = 1; i*i <= g; i++) {
if (g%i == 0) {
ans++;
if (i*i != g)
ans++;
}
}
cout << ans << "\n";
return 0;
}