codeforcs Div3 C - Common Divisors
题目
http://codeforces.com/contest/1203/problem/C
题意
给你一段序列,让你找出他们的公因数一共有多少个。
题解
找出序列所有的最大公因数就行啦,然后找最大公因数有多少个因数。
代码
#include<stdio.h>
#include<math.h>
#define ll long long
ll gcd(ll a,ll b)
{
while(b^=a^=b^=a%=b);
return a;
}
ll a[400015];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
ll minn = a[0];
for(int i=1;i<n;i++)
{
if(gcd(minn,a[i]) < minn)
minn = gcd(minn,a[i]);
if(minn == 1)
break;
}
if(minn == 1)
printf("1\n");
else
{
ll ans = 0;
for(ll i=1;i*i<=minn;i++)
{
if(minn==i*i)
ans++;
else if(minn%i==0)
{
ans+=2;
}
}
printf("%lld\n",ans);
}
return 0;
}