早上起来一看被hack掉了…然后就想起来是数据的问题
昨天本来是注意到数据有点问题的,,,,但是时间没多少了,编译器又恶心我。ε=(´ο`*)))唉。。。
题意:
给n个数找最小公倍数的除数
题解:
它的除数就是每个素因子的个数+1,然后全部乘起来,因为每个素因子,可以取【0,x】个一共有x+1种取法,考虑到gcd可能是1e12的ll级别,就得筛根号gcd内的;
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxn=1e12+5;
int main(){
ll n,a,gcd=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
gcd=__gcd(gcd,a);
}
ll ans=1;
for(ll i=2;i*i<=gcd;i++){
int c=0;
while(gcd%i==0){
c++;
gcd/=i;
}
ans*=(c+1)*1ll;
}
if(gcd>1)ans*=2;
printf("%lld",ans);
return 0;
}