Saleh127

Light oj(LO) 1289

Apr 6th, 2021
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define ull unsigned int
  5. #define test int t; cin>>t; for(int cs=1;cs<=t;cs++)
  6. #define maX 100000002
  7. bitset<maX>marked;
  8. vector<ull>p;
  9. ull pre[maX+2];
  10. void sieve()
  11. {
  12. marked[0]=1;
  13. marked[1]=1;
  14. for(ll i=4; i<=maX; i+=2)
  15. {
  16. marked[i]=1;
  17. }
  18. p.push_back(2);
  19. for(ll i=3; i<=maX; i+=2)
  20. {
  21. if(marked[i]==0)
  22. {
  23. p.push_back(i);
  24. for(ll j=i*i; j<=maX; j+=i+i)
  25. {
  26. marked[j]=1;
  27. }
  28. }
  29. }
  30. }
  31.  
  32. void precal()
  33. {
  34. pre[0]=2;
  35. for(ll i=1; i<p.size(); i++)
  36. {
  37. pre[i]=(pre[i-1]*p[i]);
  38. }
  39.  
  40. }
  41.  
  42. int main()
  43. {
  44. ios_base::sync_with_stdio(0);
  45. cin.tie(0);
  46. cout.tie(0);
  47.  
  48.  
  49. sieve();
  50. precal();
  51.  
  52.  
  53. test
  54. {
  55.  
  56. ll n,i,k;
  57.  
  58. ull ans=1;
  59.  
  60. cin>>n;
  61.  
  62. k = upper_bound(p.begin(),p.end(),n)-p.begin();
  63.  
  64. k--;
  65.  
  66. ans*=pre[k];
  67.  
  68. for(i=0;p[i]*p[i]<=n && i<p.size(); i++)
  69. {
  70.  
  71. ll x=n;
  72. ll j=0;
  73.  
  74. while(x/p[i])
  75. {
  76. x/=p[i];
  77. j++;
  78. }
  79.  
  80. ans*=pow(p[i],j-1);
  81.  
  82. }
  83.  
  84. if(n==1) ans=1;
  85. cout<<"Case "<<cs<<": "<<ans<<endl;
  86. }
  87. return 0;
  88. }
  89.  
Advertisement
Add Comment
Please, Sign In to add comment