C. Common Divisors
题意
给n个数字,找到所有元素的公共因子个数。
思路
求所有元素的最大公约数,然后看最大公约数的因子数,就是所有数的公共因子数。
代码
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b)
{
return b ? gcd(b, a % b) : a;
}
int main()
{
int n;
cin>>n;
ll gc;
cin>>gc;
for(int i=2 ; i<=n ; i++)
{
ll x;
cin>>x;
gc=gcd(x,gc);
}
ll ans=0;
if(gc==1)
{
cout<<"1"<<endl;
return 0;
}
for(ll i=1 ; i*i<=gc ; i++)
{
if(gc%i==0)
{
if(gc/i==i) ans++;
else ans+=2;
}
}
cout<<ans<<endl;
return 0;
}
总结
这个题让我学会了怎么求所有数的最大公约数,以前一直不会求n个数的最大公约数。