fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define MOD 1000000007
  5. const int MAXN=1000000;
  6.  
  7. vector<int>spf(MAXN+1);
  8.  
  9. void build_spf(){
  10. for(int i=1;i<=MAXN;i++)
  11. spf[i]=i;
  12.  
  13. for(int i=2;i*i<=MAXN;i++){
  14. if(spf[i]==i){
  15. for(int j=i*i;j<=MAXN;j+=i){
  16. if(spf[j]==j)
  17. spf[j]=i;
  18. }
  19. }
  20. }
  21. }
  22.  
  23. int main(){
  24. int N,M;
  25. cin>>N>>M;
  26.  
  27. vector<int>A(N);
  28. for(int i=0;i<N;i++)
  29. cin>>A[i];
  30.  
  31. build_spf();
  32.  
  33. unordered_map<int,long long>factM;
  34.  
  35. for(int x=2;x<=M;x++){
  36. int t=x;
  37. while(t>1){
  38. int p=spf[t];
  39. factM[p]++;
  40. t/=p;
  41. }
  42. }
  43.  
  44. for(int i=0;i<N;i++){
  45. unordered_map<int,long long>mp=factM;
  46. int x=A[i];
  47.  
  48. while(x>1){
  49. int p=spf[x];
  50. mp[p]++;
  51. x/=p;
  52. }
  53.  
  54. long long ans=1;
  55. for(auto &it:mp){
  56. ans=(ans*(it.second+1))%MOD;
  57. }
  58.  
  59. cout<<ans<<" ";
  60. }
  61.  
  62. cout<<"\n";
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0.01s 6912KB
stdin
3 3
1 2 3
stdout
4 6 6