acwing 870. 约数个数
给定n个正整数ai,请你输出这些数的乘积的约数个数, 答案对1e9+7取模
#include<bits/stdc++.h> #define MOD 1000000007 #define N 100000 using namespace std; map<int,int>d; int a[N],p[N]; int n,num,cut; int main() { cin>>n; for(int i=1;i<=n;i++) { int k; scanf("%d",&k); for(int j=2;j*j<=k;j++) if(k%j==0) { if(d[j])num=d[j]; else{cut++;num=d[j]=cut;a[num]=j;} while(k%j==0) {k/=j;p[num]++;} } if(k>1) { int j=k; if(d[j])num=d[j]; else{cut++;num=d[j]=cut;a[num]=j;} p[num]++; } } long long s=1; for(int i=1;i<=cut;i++) s=s*(p[i]+1),s%=MOD; cout<<s; return 0; }