最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作:
Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。
Paste (粘贴) : 你可以粘贴你上一次复制的字符。
给定一个数字n。你需要使用最少的操作次数,在记事本中打印出恰好n个 'A'。输出能够打印出n个 'A' 的最少操作次数。
示例 1:
输入:3
输出:3
解释:最初, 我们只有一个字符 'A'。
第 1 步, 我们使用Copy All操作。
第 2 步, 我们使用Paste 操作来获得 'AA'。
第 3 步, 我们使用Paste操作来获得 'AAA'。
说明:
n的取值范围是 [1, 1000] 。
我的思路:由于复制会增加黏贴字符的长度,所以应该尽可能的复制以提升黏贴的长度,进而减少操作;所以当拿到一个数时,我们先判断这个数是否是质数,如果是质数,则其只能由一个字符一个字符的黏贴得到,操作步数就是该数本身;如果不是质数,说明其可以通过其他数复制黏贴(仅仅两步得到);如8可由4复制黏贴得到;9可由3复制黏贴两次得到;如此知道处理N为一个质数时即可;
代码实现:
咯咯咯