#include <bits/stdc++.h>
using namespace std;
inline double _abs(double a) {
  if (a < 0) a *= -1;
  return a;
}
inline double _pow(double x, int n) {
  double sum = 1;
  int y = n;
  while (y--) {
    sum *= x;
  }
  return sum;
}
void rishe(double a, int n) {
  double ans = a;
  ans = ans / n;
  double p = _pow(ans, n);
  while (a + .001 < p || a - .001 > p) {
    if (_abs(a) < _abs(p))
      ans -= ans / n;
    else
      ans += ans / n;
    p = _pow(ans, n);
  }
  int y = ceil(ans), x = floor(ans);
  double eps = 0.00101;
  if (_abs(y - ans) < eps)
    cout << y;
  else if (ans - x < eps)
    cout << x;
  else
    cout << "No solution";
}
int main() {
  long long a, b, x, n;
  bool ok = 0;
  while (cin >> a >> b >> n) {
    if (ok) cout << endl;
    ok = 1;
    bool flag = 1;
    if (a == 0) {
      if (b == 0)
        cout << '8';
      else
        cout << "No solution";
      continue;
    }
    if (b == 0) {
      cout << '0';
      continue;
    }
    double d = double(b) / a;
    if ((d < 0 && !(n & 1)) || (d != ceil(d) || d != floor(d)))
      cout << "No solution";
    else
      rishe(d, n);
  }
  return 0;
}
