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

  1. 令当前除数j等于初始除数
  2. 检查a能否被j整除
    >若可以,则将j记为结果中的一位,然后令a = a / j,返回步骤2
    >若不可以,则除数j自减。若自减到2都无法整除,则说明此路不通,将初始除数减一
  3. 若初始除数为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 最小因式分解相关推荐

  1. LeetCode 625. 最小因式分解(贪心)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 a,找出最小的正整数 b 使得 b 的所有数位相乘恰好等于 a. 如果不存在这样的结果或者结果不是 32 位有符号整数,返回 0. 样例 ...

  2. 625 最小因式分解

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

  3. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

  4. LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 你准备参加一场远足活动.给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row ...

  5. LeetCode题解(0625):最小因式分解(Python)

    题目:原题链接(中等) 标签:数学.递归.贪心算法 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(logN)O(logN)O(logN) O(1)O(1)O(1) 44ms ...

  6. LeetCode 64最小路径和65有效数字66加一

    原创公众号:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 关注后回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode打卡 52八皇后Ⅱ&53最大子序和& ...

  7. LeetCode 1981. 最小化目标值与所选元素的差(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target . 从矩阵的 每一行 中选择一个整数,你的目标是 最小化 所有选中元素之 和 与 ...

  8. LeetCode 1942. 最小未被占据椅子的编号(set)

    文章目录 1. 题目 2. 解题 1. 题目 有 n 个朋友在举办一个派对,这些朋友从 0 到 n - 1 编号. 派对里有 无数 张椅子,编号为 0 到 infinity . 当一个朋友到达派对时, ...

  9. LeetCode 483. 最小好进制(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 对于给定的整数 n, 如果 n 的 k(k>=2)进制数的所有数位全为1,则称 k(k>=2)是 n 的一个好进制. 以字符串的形式给出 n, ...

最新文章

  1. .net 2.0 点击按钮用js控制是否回发关于vs2005的webproject补丁
  2. 想看Vue文档,cn放错位置,误入xx网站...
  3. 时间序列数据库选型——本质是列存储,B-tree索引,抑或是搜索引擎中的倒排索引...
  4. 80. Leetcode 1642. 可以到达的最远建筑 (堆-技巧三-事后小诸葛)
  5. MySQL 5.7建表时date类型提示默认值类型错误的问题处理
  6. 删除或修改本地Git保存的账号密码
  7. Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造
  8. Go 语言实现 23 种设计模式适配器
  9. 有问有答 | 算法和数据结构精华问答
  10. 你不懂API接口是什么?怎么和程序员做朋友
  11. java jar包与配置文件的写法
  12. python怎么直接操作git_基于python实现操作git过程代码解析
  13. Unknown failure: Error: java.lang.IllegalStateException: No storage with enough free space; res=-1
  14. Java-Android 之单选按钮的运用
  15. 魔百盒服务器响应超时,hitool烧写fastboot提示超时,我的两个都是这么回事,怎么办?...
  16. 0805,0603,1206这些封装的名字是什么来的
  17. 用phpstudy安装DVWA
  18. 阿里云ACA试题-云安全典型题19道
  19. vs2015遇见问题:后面有“::”的名称一定是类名或命名空间名
  20. 知识管理文档协同不一定要用语雀和石墨,用它效果更好

热门文章

  1. Git内部原理之深入解析引用规范
  2. 《结构抗震设计》在线平时作业3
  3. 1分钟快速解读什么是实时渲染
  4. NYOJ_1294_物资调度【搜索】
  5. 前端网站常用命名规范
  6. 毕设:基于SpringBoot+Vue 实现在线考试系统(前后端分离)
  7. 我的世界pe服务器插件制作,我的世界pe服务器连接方法 pe服务器插件大全
  8. 那些未知的“未知设备”(Unknow Services)
  9. Opencv实现全景图像展开之柱面展开和透视展开法
  10. PCIe之DMA(转)