fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. long long n, m;
  6. cin >> n >> m;
  7.  
  8. if(m == 0) { cout << 0 << endl; return 0; }
  9. if(n == 1) { cout << m << endl; return 0; }
  10.  
  11. long long left = 1, right = m, root = -1;
  12.  
  13. while(left <= right) {
  14. long long mid = (left + right) / 2;
  15. long long val = 1;
  16. bool value = false;
  17.  
  18. for(long long i = 0; i < n; i++) {
  19. if(val > m / mid) {
  20. value = true;
  21. break;
  22. }
  23. val *= mid;
  24. }
  25.  
  26. if(value == false && val == m) {
  27. root = mid;
  28. break;
  29. }
  30. else if(value == false && val < m) {
  31. left = mid + 1;
  32. }
  33. else {
  34. right = mid - 1;
  35. }
  36. }
  37.  
  38. cout << root << endl;
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 5320KB
stdin
3 27 
stdout
3