fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int MOD=1000000007;
  4. int nfact[1000009];
  5. int nfactPower[1000009];
  6. long long int ans=1;
  7. long long int power(long long int a,long long int k)
  8. {
  9. long long int res;
  10. long long int temp;
  11. if(k==0)
  12. {
  13. return 1;
  14. }
  15. temp=power(a,k/2);
  16. res=((temp%MOD)*(temp%MOD))%MOD;
  17. if(k%2==1)
  18. {
  19. res=((a%MOD)*(res%MOD))%MOD;
  20. }
  21. return res%MOD;
  22. }
  23. void primeFact(int a)
  24. {
  25. int i;
  26. while(a%2==0)
  27. {
  28. //printf("2+");
  29. a=a/2;
  30. ans=((ans%MOD)/(nfactPower[2]%MOD))%MOD;
  31. nfact[2]++;
  32. nfactPower[2]=((nfactPower[2]%MOD)+(power(2,nfact[2])%MOD))%MOD;
  33. ans=((ans%MOD)*(nfactPower[2]%MOD))%MOD;
  34. }
  35. for(i=3;i*i<=a;i+=2)
  36. {
  37. while(a%i==0)
  38. {
  39. //printf("%d+",i);
  40. a=a/i;
  41. ans=((ans%MOD)/(nfactPower[i]%MOD))%MOD;
  42. nfact[i]++;
  43. nfactPower[i]=((nfactPower[i]%MOD)+(power(i,nfact[i])%MOD))%MOD;
  44. ans=((ans%MOD)*(nfactPower[i]%MOD))%MOD;
  45. }
  46. }
  47. if(a>2)
  48. {
  49. //printf("%d",a);
  50. ans=((ans%MOD)/(nfactPower[a]%MOD))%MOD;
  51. nfact[a]++;
  52. nfactPower[a]=((nfactPower[a]%MOD)+(power(a,nfact[a])%MOD))%MOD;
  53. ans=((ans%MOD)*(nfactPower[a]%MOD))%MOD;
  54. }
  55.  
  56. }
  57. void print()
  58. {
  59. for(int i=0;i<20;i++)
  60. {
  61. printf("%d+",nfact[i]);
  62. }
  63. printf("\n");
  64. for(int i=0;i<20;i++)
  65. {
  66. printf("%d+",nfactPower[i]);
  67. }
  68. printf("\n\n");
  69. }
  70. int main()
  71. {
  72. for(int i=0;i<1000009;i++)
  73. {
  74. nfact[i]=0;
  75. nfactPower[i]=1;
  76. }
  77. //print();
  78. int t,n,q,x;
  79. long long int a;
  80. scanf("%d%d",&n,&q);
  81. primeFact(n);
  82. //print();
  83. a=n;
  84. while(q--)
  85. {
  86. scanf("%d",&x);
  87. primeFact(x);
  88. //print();
  89. printf("%lld\n",ans%MOD);
  90. }
  91. return 0;
  92. }
Success #stdin #stdout 0s 11280KB
stdin
1 9
1
2
3
4
5
6
7
8
9
stdout
1
3
12
60
360
2418
19344
159120
1481040