#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e2 + 10;
const int INF = 1 << 30;
char str[MAXN][MAXN];
int Pow(int a, int b) {
  if (b == 0) return 1;
  int res = 1;
  while (b--) res *= a;
  return res;
}
int main() {
  int a, b, n;
  while (scanf("%d%d%d", &a, &b, &n) != EOF) {
    if (a == 0) {
      if (b == 0)
        printf("1\n");
      else
        printf("No solution\n");
      continue;
    }
    if (b % a) {
      printf("No solution\n");
      continue;
    }
    a = b / a;
    int res = -INF;
    if (a < 0) {
      a = -a;
      if (n % 2 == 0) {
        printf("No solution\n");
        continue;
      }
      for (int i = 0; i <= 1000; i++) {
        if (Pow(i, n) == a) {
          res = i;
          break;
        }
        if (Pow(i, n) > a) break;
      }
      res = -res;
    } else {
      for (int i = 0; i <= 1000; i++) {
        if (Pow(i, n) == a) {
          res = i;
          break;
        }
        if (Pow(i, n) > a) break;
      }
    }
    if (res == -INF) {
      printf("No solution\n");
    } else {
      printf("%d\n", res);
    }
  }
  return 0;
}
