fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //return 1, if == m:
  5. //return 0, if < m:
  6. //return 2, if > m:
  7. int func(int mid, int n, int m) {
  8. long long ans = 1;
  9. for (int i = 1; i <= n; i++) {
  10. ans = ans * mid;
  11. if (ans > m) return 2;
  12. }
  13. if (ans == m) return 1;
  14. return 0;
  15. }
  16.  
  17. int NthRoot(int n, int m) {
  18. //Use Binary search on the answer space:
  19. int low = 1, high = m;
  20. while (low <= high) {
  21. int mid = (low + high) / 2;
  22. int midN = func(mid, n, m);
  23. if (midN == 1) {
  24. return mid;
  25. }
  26. else if (midN == 0) low = mid + 1;
  27. else high = mid - 1;
  28. }
  29. return -1;
  30. }
  31.  
  32. int main()
  33. {
  34. int n = 3, m = 27;
  35. int ans = NthRoot(n, m);
  36. cout << "The answer is: " << ans << "\n";
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0s 5296KB
stdin
Standard input is empty
stdout
The answer is: 3