题目大意:给定一组数,求能被其中每一个数整除的数的个数,即这组数的公因子个数。
分析:先__gcd()遍历求出这组数的最大公约数,然后对这个最大公约数进行因数分解,其因数个数即为答案。
#include<algorithm>
#include<math.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#define ll long long
#define INF 0x3f3f3f3f
#define For(i,a,b) for(int i=a;i<b;i++)
#define lm(x) 1<<(x)
using namespace std;
#define N
ll n,x,g,ans;
int main()
{ios::sync_with_stdio(false);
cin>>n;
while(n--){
cin>>x;
g=__gcd(g,x);
}
ll i=1;
for(;i*i<g;i++){
if(g%i==0)
ans+=2;
}if(i*i==g) ans++;
cout<<ans<<endl;
return 0;
}