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 次瀏覽

開啟您的事業

完成課程獲得認證

開始
廣告