fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. const ll M=1e6;
  5. vector<ll>spf(M+1);
  6.  
  7. void cspf() {
  8. for(ll i=2;i<=M;i++)spf[i]=i;
  9. for(ll i=2;i*i<=M;i++) {
  10. if(spf[i]==i) {
  11.  
  12. for(ll j=i*i;j<=M;j+=i) {
  13. if(spf[j]==j)spf[j]=i;
  14.  
  15.  
  16. }
  17. }
  18. }
  19. }
  20.  
  21. unordered_map<ll,ll>cl(ll v) {
  22. unordered_map<ll,ll>m;
  23. while(v!=1) {
  24. ll d=spf[v];
  25. m[d]++;
  26. v/=d;
  27. }
  28. return m;
  29. }
  30.  
  31.  
  32.  
  33. int main() {
  34. ll n,m;
  35. cin>>n>>m;
  36. unordered_map<ll,ll>b;
  37. cspf();
  38.  
  39. for(ll i=2;i<=m;i++) {
  40. unordered_map<ll,ll>a=cl(i);
  41. for(auto it=a.begin();it!=a.end();++it)b[it->first]+=it->second;
  42. }
  43.  
  44. ll arr[n+1]={0};
  45. for(ll i=1;i<=n;i++) {
  46. unordered_map<ll,ll>temp=b;
  47.  
  48. ll g=1;
  49. cin>>arr[i];
  50. unordered_map<ll,ll>a=cl(arr[i]);
  51.  
  52. for(auto it=a.begin();it!=a.end();++it){
  53. temp[it->first]+=it->second;
  54. }
  55.  
  56. for(auto it=temp.begin();it!=temp.end();++it) {
  57. g=(g*(it->second+1))%1000000007;
  58. }
  59. cout<<g<<" ";
  60. }
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0.02s 11192KB
stdin
5 6
6 10 15 28 30
stdout
48 54 60 84 72