625. 最小因式分解
题目描述:
给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a。
如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0。

递归因式分解法
这个自己想的递归解法超出时间限制
令符合题意的因式分解的函数为fun(int a)
则考虑一个极端例子,
fun(59049) = 9*fun(6561)
= 9*9*fun(729)
= 9*9*9*fun(81)
= 9*9*9*9*9
得解99999
常用库
int to string : to_string(int input)
string to int : stoi(string input)
当需要操控到各个数位上的数字时
使用乘以十的次幂的方法,而不需要在字符串与数字之间转换
如12345 = 5 * 1 + 4 * 10 + 3 * 100 + 2 * 1000 + 1 * 10000
个十百千万位分别对应乘以10的0,1,2,3,4次幂
看答案后的解法
对输入的每个正整数a,记初始除数i为9
- 令当前除数j等于初始除数<

这篇博客讨论了LEETCODE 625题目的解决方案,即寻找使数位相乘等于给定正整数a的最小正整数b。博主尝试了递归因式分解法,但遇到时间限制问题。文章提到了常用的库函数如to_string和stoi,并提供了一种避免字符串转换的方法来操作数位。博主还分享了从答案中学到的解题思路,涉及到通过不断尝试除数(从9开始递减)来找到符合条件的因式分解。
最低0.47元/天 解锁文章
1266

被折叠的 条评论
为什么被折叠?



