只有兩個鍵的鍵盤
分析:
注意以下幾點:先開始已經有一個字符A,不支持部分複製,並且只能粘貼你上一次複製的字符
思路:我們先寫出前十項觀察一下
當n=1,return 0;
n=2,return 2;
n=3,return 3;
n=4,return 4;
n=5,return 5;
n=6,return 5;
n=7,return 7;
n=8,return 6;
n=9,return 9;
n=10,return 7;
由此可見,其實就是求它的因子個數的和。
方法一:非遞歸
class Solution
{
public:
int minSteps(int n)
{
int res=0;
for(int i=2;i<=n;i++)
{
while(n%i==0)
{
res+=i;
n/=i;
}
}
return res;
}
}
方法二:遞歸
class Solution
{
public:
int minSteps(int n)
{
if(n==1)
return 0;
for(int i=2;i<=n;i++)
{
if(n%i==0)
{
return i+minSteps(n/i);
}
}
return n;
}
};