classSolution{public:intminSteps(intn){if(n<=1)return0;// dp[i] := min steps to get i 'A'vector<int>dp(n+1);// Copy 'A', then paste 'A' i - 1 timesiota(begin(dp),end(dp),0);for(inti=2;i<=n;++i)for(intj=i/2;j>2;--j)if(i%j==0){dp[i]=dp[j]+i/j;// Paste dp[j] i / j timesbreak;}returndp[n];}};
classSolution{publicintminSteps(intn){// dp[i] := min steps to get i 'A'int[]dp=newint[n+1];for(inti=2;i<=n;++i){dp[i]=i;// Copy 'A', then paste 'A' i - 1 timesfor(intj=i/2;j>2;--j)if(i%j==0){dp[i]=dp[j]+i/j;// Paste dp[j] i / j timesbreak;}}returndp[n];}}
classSolution:defminSteps(self,n:int)->int:ifn<=1:return0# dp[i] := min steps to get i 'A'# Copy 'A', then paste 'A' i - 1 timesdp=[iforiinrange(n+1)]foriinrange(2,n+1):forjinrange(i//2,2,-1):ifi%j==0:dp[i]=dp[j]+i//j# Paste dp[j] i / j timesbreakreturndp[n]