#include using namespace std; #define ll long long #define ld long double #define out(x) cout< inline bool chmin(T& a, T b) {if(a > b){a = b; return true;} else {return false;}}; template inline bool chmax(T& a, T b) {if(a < b){a = b; return true;} else {return false;}}; const ll INF=(1LL<<60); const ll mod=998244353; using Graph = vector>; using Network = vector>>; using Grid = vector; const vector dx = {0, 1, 0, -1}; const vector dy = {1, 0, -1, 0}; int main() { ll K, N;cin>>K>>N; set st; for(ll x = 1; x*x*x*x*x*x <= N; x++) { for(ll y = 1; y*y*y*y <= N; y++) { ll n = x*x*x*x*x*x + y*y*y*y; if(n % K != 0) continue; n = n / K; ll z = sqrt((ld)n); if(z*z != n) continue; st.insert(n); } } out(st.size()); }