fork download
  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<map>
  4. #include<cmath>
  5. #include<vector>
  6. using namespace std;
  7. #define mod 1000000007
  8. #define MAX 50000
  9. #define ll long long int
  10. map<ll,ll> prime,div;
  11. ll i,j,s,res,k,ans,x;
  12. vector<ll> pr;
  13. ll fpow(ll base, ll power)
  14. {
  15. ll re=1;
  16. while(power>0)
  17. {
  18. if(power%2==1)
  19. {
  20. re*=base;
  21. }
  22. base*=base;
  23. power/=2;
  24. }
  25. return re;
  26. }
  27. int main()
  28. {
  29. for(i=2;i<sqrt(MAX+1);i++)
  30. {
  31. if(prime[i]==0)
  32. {
  33. for(j=2;i*j<MAX+1;j++)
  34. {
  35. prime[i*j]=1;
  36. }
  37. }
  38. }
  39. for(i=2;i<MAX+1;i++)
  40. {
  41. if(prime[i]==0)
  42. {
  43. pr.push_back(i);
  44. }
  45. }
  46. for(i=3;i<=MAX;i++)
  47. {
  48. res=0;
  49. j=0;
  50. k=0;
  51. ans=1;
  52. for(k=0;k<pr.size() && pr[k]<=i;k++)
  53. {
  54. x=1;
  55. res=0;
  56. while((i>=fpow(pr[k],x)))
  57. {
  58. res+=i/fpow(pr[k],x);
  59.  
  60. x++;
  61. }
  62.  
  63. ans*=(res+1)%mod;
  64. }
  65. div[i]=ans;
  66. }
  67. div[0]=1;
  68. div[1]=1;
  69. div[2]=2;
  70. ll t;
  71. scanf("%lld",&t);
  72. while(t--)
  73. {
  74. ll y;
  75. scanf("%lld",&y);
  76. printf("%lld\n",div[y]);
  77. }
  78. return 0;
  79. }
Success #stdin #stdout 8.22s 7292KB
stdin
3
2
3
4
stdout
2
4
8