#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
inline long long getint() {
  long long _x = 0, _tmp = 1;
  char _tc = getchar();
  while ((_tc < '0' || _tc > '9') && _tc != '-') _tc = getchar();
  if (_tc == '-') _tc = getchar(), _tmp = -1;
  while (_tc >= '0' && _tc <= '9') _x *= 10, _x += (_tc - '0'), _tc = getchar();
  return _x * _tmp;
}
inline long long add(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x += _y;
  return _x >= _mod ? _x - _mod : _x;
}
inline long long sub(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x -= _y;
  return _x < 0 ? _x + _mod : _x;
}
inline long long mul(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x *= _y;
  return _x >= _mod ? _x % _mod : _x;
}
long long mypow(long long _a, long long _x, long long _mod) {
  if (_x == 0) return 1LL;
  long long _ret = mypow(mul(_a, _a, _mod), _x >> 1, _mod);
  if (_x & 1) _ret = mul(_ret, _a, _mod);
  return _ret;
}
long long mymul(long long _a, long long _x, long long _mod) {
  if (_x == 0) return 0LL;
  long long _ret = mymul(add(_a, _a, _mod), _x >> 1, _mod);
  if (_x & 1) _ret = add(_ret, _a, _mod);
  return _ret;
}
inline bool equal(double _x, double _y) {
  return _x > _y - 1e-9 && _x < _y + 1e-9;
}
int __ = 1, _cs;
void build() {}
inline long long bdr_mul(long long a, long long b, long long X) {
  if (a > X / b) return X;
  return a * b;
}
inline long long pp(long long a, long long b) {
  if (b == 0) return 1;
  long long ret = pp(a, b / 2);
  ret = bdr_mul(ret, ret, 1e14);
  if (b & 1LL) ret = bdr_mul(ret, a, 1e14);
  return ret;
}
inline long long ppp(long long a0, long long r, long long tn) {
  if (r == 1) return bdr_mul(a0, tn, 1e14);
  long long ret = bdr_mul(a0, pp(r, tn) - 1, 1e14);
  ret /= (r - 1);
  return ret;
}
long long k, b, n, t;
void init() {
  k = getint();
  b = getint();
  n = getint();
  t = getint();
}
void solve() {
  long long tmp = 1;
  for (long long i = 1; i <= n and tmp <= t; i++) tmp = tmp * k + b;
  if (tmp <= t) {
    puts("0");
    exit(0);
  }
  long long ans = n;
  if (t > b) {
    for (long long i = n - 1; i >= 1; i--) {
      long long dlt = t - b;
      long long ttt = pp(k, n - i);
      if (n - 1 - i >= 1) ttt += bdr_mul(b, ppp(k, k, n - 1 - i), 1e14);
      if (dlt >= ttt) ans = i;
    }
  }
  cout << ans << endl;
}
int main() {
  build();
  while (__--) {
    init();
    solve();
  }
}
