C++ 中的 2 键键盘


假设在一个文本编辑器中我们只有一个字符“A”。我们可以在文本编辑器中对这个字母执行两个操作 −

  • 复制全部 − 我们可以复制笔记本上的所有字符
  • 粘贴 − 我们可以粘贴上次复制的字符。

现在假设我们有一个数字 n。我们必须通过执行允许的最小步数来在笔记本上得到恰好 n 个“A”。我们必须找出以最少的步数得到 n 个“A”的结果。因此,如果给定的 n 为 3,则答案将为 3,最初只有一个“A”,现在复制它并粘贴它,因此现在将有“AA”。现在,我们可以再次粘贴,因此将放置一个“A”。因此,我们将得到“AAA”。

为了解决这个问题,我们将按照以下步骤进行 −

  • ret := 0
  • for k in range 2 to n
    • while n mod k is not 0
      • ret := ret + k and n := n / k
  • return ret

让我们看一下以下实现以更好地理解 −

示例

 实时演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int minSteps(int n) {
      int ret = 0;
      for(int k = 2; k <= n; k++){
         for(; n % k == 0; ret += k, n /= k);
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.minSteps(10));
}

输入

10

输出

7

更新于: 04-05-2020

169 次浏览

开启您的事业

完成课程获得认证

开始
广告
© . All rights reserved.