春招第二题

vivo2020春招第二题,不是很难的题目,笔试时有些细节没处理好,白白浪费时间,说到底还是自己太菜,还是总结整理下吧
题目:正整数n,m(m>9), 找到最小正整数m使得m的各位(个十百千...)相乘等于n。比如n=36,m=49
我的想法:现将整数n拆分,36=2*2*3*3,
将拆分后的最小质数因子合并以减小位数,2*2=4,3*3=9
最后合并49
由于当时没有得到系统的测试,也不知道如下代码是否100%正确,望大佬指正。
def solution(n):
    # 将整数n拆分成2~9内的最小质数因子,如36=2*2*3*3
    divide=[]
    while n >= 2:
        num=n # 用作参考
        for i in range(2, 10):
            if n % i == 0: 
                # 10以内的最小质数因子相乘合并(为了减少位数)
                if len(divide) and i*divide[-1]<10: 
                    divide.append(divide.pop(-1)*i)
                else:
                    divide.append(i)
                n=n / i
                break
        if n == num and n>=10: # 如果存在大于10的质数因子,那么就不符合
            return -1
    # 将各因子形成一个整数
    ans=0
    divide.sort()
    for i in divide:
        ans=(ans+i)*10
    return int(ans / 10)


#vivo2020春招##vivo##笔试题目#
全部评论
你想得太复杂了…… 直接从9开始往下除就行……两行半就够。
点赞 回复 分享
发布于 2020-03-09 13:48

相关推荐

mama3925:建议专业技能里测试移到最上面,加粗。然后适当加入些自动化测试工具。第二个项目,第三条亮点最后错别字。然后佬如果对自己很自信的话,可以项目放前面,然后项目里可以编造点测试经历,写在写在项目亮点的前两行。最后可加个自我评价,放个博客或者仓库链接
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务