//with memoization int getMinSteps(int n) { if(n==1) return 0; if(memoarray[n]!=-1) return memoarray[n]; int r = 1 + getMinSteps(n-1); if(n%2==0) r = min(r,1+getMinSteps(n/2)); if(n%3==0) r = min(r,1+getMinSteps(n/3)); memoarray[n]=r; return r; }
int main() { int i = 5; //std::cin >> n; initializeArray(); std::cout << getMinSteps(10); return 0; }
int main() { int tstcases, n, i; scanf("%d",&tstcases); getMinSteps(); while(tstcases--) { scanf("%d",&n); printf("\nanswer %d",dp[n]); } printf("\n"); return 0; }
int getMinSteps(int n) { if (n == 1) { return 0; } if (memo[n] != -1) { return memo[n]; } int optimalSol = 1 + getMinSteps(n - 1); if (n % 2 == 0) { optimalSol = min(optimalSol, 1 + getMinSteps(n / 2)); } if (n % 3 == 0) { optimalSol = min(optimalSol, 1 + getMinSteps(n / 3)); } memo[n] = optimalSol; return optimalSol; }
int main() { int tstcases, n, i; for(i=0; i<1000000; i++) memoarray[i]=-1; scanf("%d",&tstcases); while(tstcases--) { scanf("%d",&n); printf("\nanswer %d",getMinSteps(n)); } printf("\n"); return 0; }
int main(void) { int n; n=scan_d(); printf("%d",getMinSteps(n)); return 0; }