编程题求解

输入整数n,求m,m>9,m中各个数位的乘积=n的最小整数; 如n=36,m=49;
全部评论
暂时想到的思路:先对n进行因数分解,如果素因数有大于7的,那么m不存在。那么n可以表示成 n=2^a * 3^b * 5^c * 7^d,要让m最小,那么应该尽可能的合并这些素因数,所以存在的合并情况是2*2, 2*3, 2*2*2,这样使用贪心法使得m的位数最少,在对合并后的数字排序就可以了。比如说36=2*2*3*3, 一开始可以表示m=2233,贪心法合并49,排序49
点赞
送花
回复
分享
发布于 2016-09-05 13:14
因为m的每一位范围是0~9(除最高位),所以如果n是大于9的素数,函数应将输入视为非法输入
点赞
送花
回复
分享
发布于 2016-09-05 12:48
秋招专场
校招火热招聘中
官网直投
n要等于11可咋整
点赞
送花
回复
分享
发布于 2016-09-05 12:22
什么叫n的最小整数
点赞
送花
回复
分享
发布于 2016-09-05 12:49
为啥你们想的很复杂,我的思路就是不断除以9,87,6一直到2然后从个位到最高位填,总感觉很简单的样子
点赞
送花
回复
分享
发布于 2016-09-05 18:18

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务