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