Lang:G++
Edit123456789101112131415161718192021222324252627#include <iostream>#include <map>using namespace std;map<int, int> f;int calc(int n) {if (f.find(n) == f.end()) {int s;if (n % 2 == 0) {s = calc(n / 2);} else if (n == 1) {s = 1;} else {s = min(calc(n - 1), calc(n + 1)) + 1;}f[n] = s;}return f[n];}int main() {int n;cin >> n;cout << calc(n);}