假定每次整除平均需要 我咋知道,他又没给完),加之题目背景和 反正我是没看出来),这个数会在不断地迭代过程中变为 1,然后在 1 到
- 第一步优化归一后的结果求解,这个循环的周期是
,现在还剩 次计算,整个变化的数组长这样
众所周知(我还真不是很知),
不能归一的话怎么办呢,最简单的就是直接把这个时候的
合并两类,推出最终公式:
- 只做第一步优化连样例都过不了,因为数据给大之后凑整除需要的累加次数也会很大,很容易就超了,所以还要优化累加操作。 比如要让
被 整除,很容易想到要凑 ,也就是说找到 在 后的一个倍数,首先确定 在 大约是 倍,显然下一个倍数就是 ,也就是说,每次直接加上
就行了。 当然如果这里使用 ceil 做取整运算还是超,因为这玩意其实是 double __cdecl ceil(double _X);,并非是对整型的运算,算多了效率挺低,因此数学代换一下就成了(当然这个除是整除):
第一个公式单从数学意义上来说,对于
显然时间复杂度优于二分,为