3.最大全数字

将192分别与1、2、3相乘:

192*1=192;

192*2=384;

192*3=576;

连接这些乘积,我们得到一个1至9全数字的数192384576。我们称192384576为192和(1,2,3)的连接乘积。同样地,将9分别与1、2、3、4、5相乘,得到1至9全数字的数918273645,即是9和(1,2,3,4,5)的连接乘积。对于n > 1,所有某个整数和(1,2, … ,n)的连接乘积所构成的数中,最大的1至9全数字的数是多少?

 

def judging(n):#n表示连乘数字个数,(1,2,3)则表示n=3
    std = ['1', '2', '3', '4', '5', '6', '7', '8', '9']#这里利用了list来判断相乘之后是否会出现全数字
    maxnum = 0;
    string='';
    a=int(0.9*pow(10,6-n))
    b=int(1*pow(10,6-n))
    for i in range(a,b):
        for y in range(1,n+1):
            string+=str(i*y)
        lst=list(string)
        lst.sort()
        if std==lst and maxnum<int(string):
            maxnum=int(string)
        string=''#记得每一次之后清空这个临时字符串
    return maxnum

if __name__ == '__main__':
    max=0;
    for i in range(2,6):
        temp=judging(i)
        print(temp)
        if temp>max:
            max=temp

    print(max)

 

注:本题重要的是理解题意,如果首先做理论分析的话,会发现(1,2,3)和(1,2,3,4)是不存在这样的数字的,而(1,2,3,4,5)只存在一个数字9,但n>=6时,已经不满足题设,所以有可能出现的就只有在(1,2)这个连乘了。

转载于:https://my.oschina.net/u/3641281/blog/1554122

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值