#include #include using namespace std; using ll = long long; ll rec (ll H, ll A, map& memo) { if (H == 0) return 0; if (memo.find(H) != memo.end()) return memo[H]; ll res = 1 + 2 * rec(H/A, A, memo); memo[H] = res; return memo[H]; } int main () { // 再帰メモ化していいやつ。atcoderに似た問題あった気がする ll H, A; cin >> H >> A; map memo; cout << rec(H, A, memo) << "\n"; }