DuongNhi99

DNPREVOIA

Nov 25th, 2020 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef pair<long long, long long> ii;
  5.  
  6. template<typename T>T pw(T a, T n) {
  7.     if (n == 1) return a;
  8.     T t = pw(a, n/2);
  9.     return n&1 ? t*t*a : t*t;
  10. }
  11.  
  12. long long n;
  13. long long l, r, mid, temp;
  14. priority_queue<ii, vector<ii>, greater<ii>> ans;
  15.  
  16. void query() {
  17.     cin >> n;
  18.  
  19.     if(n == 1 || n == 2) {
  20.         cout << n << ' ' << 1 << '\n';
  21.         cout << '\n';
  22.         return;
  23.     }
  24.  
  25.     r = n;
  26.     for(long long i = 1; r != 2; ++i) {
  27.         for(l = 2; l <= r; ) {
  28.             mid = (l + r)/2; temp = pw(mid, i);
  29.             if(temp >= n || temp < 0) r = mid - 1;
  30.             else l = mid + 1;
  31.         }
  32.         if(pw(++r, i) == n) {
  33.             ans.emplace(r, i);
  34.             if(i%2 == 0)
  35.                 ans.emplace(-r, i);
  36.         }
  37.     }
  38.  
  39.     while(ans.empty() == false)
  40.         cout << ans.top().first << ' ' << ans.top().second << '\n',
  41.         ans.pop();
  42.     cout << '\n';
  43. }
  44.  
  45. int main() {
  46.  
  47.     //freopen("DNPREVOIA.inp", "r", stdin);
  48.     //freopen("DNPREVOIA.out", "w", stdout);
  49.     ios_base::sync_with_stdio(false);
  50.     cin.tie(NULL); cout.tie(NULL);
  51.  
  52.     int t; cin >> t;
  53.     while(t--) {
  54.         query();
  55.     }
  56.  
  57.     return 0;
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment