LEETCODE 625 最小因式分解
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等于初始除数
- 检查a能否被j整除
>若可以,则将j记为结果中的一位,然后令a = a / j,返回步骤2
>若不可以,则除数j自减。若自减到2都无法整除,则说明此路不通,将初始除数减一 - 若初始除数为2仍无法找到解,则说明不存在这样的结果或者结果不是 32 位有符号整数,返回 0。
class Solution {
public:int smallestFactorization(int a) {int res = INT_MAX;//cout << res << endl;if (a <= 9)return a;bool flag = false;for (int InitialDivider = 9; InitialDivider >= 2; InitialDivider--) {int Dividend = a;int Divider = InitialDivider;int currentRes = 0;int power = 0;while (Divider >= 2) {if (Dividend % Divider == 0) {currentRes += Divider * pow(10, power);power++;//cout << to_string(currentRes) << endl;if (currentRes < 0) // check if int range exceededbreak;Dividend = Dividend / Divider;} else {Divider--;}}if (Dividend == 1) {res = currentRes < res ? currentRes : res;} else {continue;}}if (res == INT_MAX)res = 0;return res;}};
LEETCODE 625 最小因式分解相关推荐
- LeetCode 625. 最小因式分解(贪心)
文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a. 如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0. 样例 ...
- 625 最小因式分解
题目描述: 给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a. 如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0. 样例 1 输入: 48 输出: 68 样 ...
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...
- LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)
文章目录 1. 题目 2. 解题 1. 题目 你准备参加一场远足活动.给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row ...
- LeetCode题解(0625):最小因式分解(Python)
题目:原题链接(中等) 标签:数学.递归.贪心算法 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(logN)O(logN)O(logN) O(1)O(1)O(1) 44ms ...
- LeetCode 64最小路径和65有效数字66加一
原创公众号:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode打卡 52八皇后Ⅱ&53最大子序和& ...
- LeetCode 1981. 最小化目标值与所选元素的差(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target . 从矩阵的 每一行 中选择一个整数,你的目标是 最小化 所有选中元素之 和 与 ...
- LeetCode 1942. 最小未被占据椅子的编号(set)
文章目录 1. 题目 2. 解题 1. 题目 有 n 个朋友在举办一个派对,这些朋友从 0 到 n - 1 编号. 派对里有 无数 张椅子,编号为 0 到 infinity . 当一个朋友到达派对时, ...
- LeetCode 483. 最小好进制(二分查找)
文章目录 1. 题目 2. 解题 1. 题目 对于给定的整数 n, 如果 n 的 k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制. 以字符串的形式给出 n, ...
最新文章
- .net 2.0 点击按钮用js控制是否回发关于vs2005的webproject补丁
- 想看Vue文档,cn放错位置,误入xx网站...
- 时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引...
- 80. Leetcode 1642. 可以到达的最远建筑 (堆-技巧三-事后小诸葛)
- MySQL 5.7建表时date类型提示默认值类型错误的问题处理
- 删除或修改本地Git保存的账号密码
- Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造
- Go 语言实现 23 种设计模式适配器
- 有问有答 | 算法和数据结构精华问答
- 你不懂API接口是什么?怎么和程序员做朋友
- java jar包与配置文件的写法
- python怎么直接操作git_基于python实现操作git过程代码解析
- Unknown failure: Error: java.lang.IllegalStateException: No storage with enough free space; res=-1
- Java-Android 之单选按钮的运用
- 魔百盒服务器响应超时,hitool烧写fastboot提示超时,我的两个都是这么回事,怎么办?...
- 0805,0603,1206这些封装的名字是什么来的
- 用phpstudy安装DVWA
- 阿里云ACA试题-云安全典型题19道
- vs2015遇见问题:后面有“::”的名称一定是类名或命名空间名
- 知识管理文档协同不一定要用语雀和石墨,用它效果更好