题目描述
剪切板中初始状态下只有一个字母 ‘A’,只允许复制全部和粘贴全部操作,使用最小的操作步骤得到 n 个字符 ‘A’。
测试用例
根据题意,n 的取值区间为 [1, 1000]
1 | // Case 0: n 等于 1 |
分析
如果 n 是偶数,
f(n) = f(n/2) + 2
复制一次,粘贴一次如果 n 是奇数,
- 若 n 是质数,则
f(n) = n
- 零 m * x == n,假设 x >= m 则
f(n) = m + f(x)
,复制一次,粘贴 m - 1次。
- 若 n 是质数,则
代码
1 | class Solution: |
注意两点:
#1考虑 n == 1 的基本情况
#2 找最大因数时找到之后一定要跳出循环