LeetCode刷题之650.只有两个键的键盘 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作: 1.Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。 2.Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。 你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例: 输入: 3 输出: 3 解释: 最初, 我们只有一个字符 'A'。 第 1 步, 我们使用 Copy All 操作。 第 2 步, 我们使用 Paste 操作来获得 'AA'。 第 3 步, 我们使用 Paste 操作来获得 'AAA'。 说明: n 的取值范围是 [1, 1000]。 代码: class Solution: def minSteps(self, n: int) -> int: result = 0 a = 2 while n > 1: while n % a == 0: result += a n = n / a a = a + 1 return result # 执行用时 :48 ms, 在所有 Python3 提交中击败了90.73%的用户 # 内存消耗 :13.9 MB, 在所有 Python3 提交中击败了6.25%的用户 算法说明: 如果n是质数,则只能一个一个的复制得到,而且一个数分解成质因数相乘后,加和是最小的,因此只要求出n的所有质因数之和即可。