BigFatInteger
作者 : 翁伊嘉
关键词 : 简单数论(?) 快速幂(?)
题目简述
输入两个整数. .
你有一个数字,初始为。每次你可以对进行以下两种操作之一:
- 给乘上一个任意的质数
- 给乘上它目前的一个因子
输出将变成所需要的最小操作次数。
分析
两种操作都只涉及乘法,考虑把分解质因数,问题相当于是采用最少的操作,让每个质因数都在中出现指定的次。
假设中只包含一种质因子,且. 最优策略一定是先采取一次第一种操作,使,然后用类似快速幂的办法,用次操作把变成
有个质因子的情况也一样,首先采取次第一种操作使,接着进行第二种操作。每个第二种操作中,各个质因子的增加情况是互相独立的,因此第二种操作的最少次数由增加到所需要操作次数最多的的质因子决定。
算法
将分解质因数,每种质因子的出现次数再乘上,得到中每个质因子出现的次数.
根据之前的分析,
时间复杂度.空间复杂度