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
- while n mod k is not 0
- 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
廣告