Advertisement
Guest User

Untitled

a guest
Sep 8th, 2021
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. #include<cmath>
  4.  
  5. using namespace std;
  6.  
  7. const long long inf = 2e18 + 5;
  8.  
  9. long long fastPow(long long x, int p)
  10. {
  11.     long long answer = 1, current = x;
  12.     while(p!=0)
  13.     {
  14.         if(p%2!=0)
  15.         {
  16.             if(answer>inf/current+1) return inf;
  17.             answer *= current;
  18.         }
  19.  
  20.         p/=2;
  21.  
  22.         if(current<=inf/current+1) current *= current;
  23.         else current = inf;
  24.     }
  25.  
  26.     return answer;
  27. }
  28.  
  29. long long dp[70];
  30. void solveTestcase()
  31. {
  32.     long long n;
  33.     cin >> n;
  34.  
  35.     memset(dp, 0, sizeof(dp));
  36.  
  37.     dp[1] = n - 1;
  38.     for(int p = 2;p<65;p++)
  39.     {
  40.         long long l = 1, r = dp[p-1] + 1, mid;
  41.         while(l+1<r)
  42.         {
  43.             mid = (l+r)/2;
  44.  
  45.             if(fastPow(mid, p)<=n) l = mid;
  46.             else r = mid - 1;
  47.         }
  48.  
  49.         if(fastPow(r, p)<=n) dp[p] = r - 1;
  50.         else dp[p] = l - 1;
  51.     }
  52.  
  53.     for(int x = 65;x>=1;x--)
  54.     {
  55.         for(int k = 2*x;k<=65;k+=x)
  56.             dp[x] -= dp[k];
  57.     }
  58.  
  59.     cout << dp[1] << '\n';
  60. }
  61.  
  62. int main()
  63. {
  64.     ios::sync_with_stdio(false);
  65.     cin.tie(nullptr);
  66.  
  67.     int T;
  68.     cin >> T;
  69.  
  70.     while(T--) solveTestcase();
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement