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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP