首页 > 其他 > 详细

987654321的阶乘转12进制末尾几个0?

时间:2014-03-11 16:25:03      阅读:427      评论:0      收藏:0      [点我收藏+]

我的解法,求大神给个更好的,觉得这个算法太慢了:

  

bubuko.com,布布扣
#coding:utf8
#问题:987654321的阶乘转换为12进制,结尾有多少个0?
#我的解法:把每个元素分解到两个数组中去,然后结对取出来。结对数就是最后0的个数。。

def i3m(num):#是不是3的倍数
    return  not bool(num%3)

def i2m(num):#是不是2的倍数
    return  not bool(num%2)

def cut3(num):#递归切数字
    a,b=divmod(num,3)
    if b==0:
        s3.append(3)
        return cut3(a)
    else:
        return num

def cut2(num):
    a,b=divmod(num,2)
    if b ==0:
        s2.append(2)
        return cut2(a)
    else:
        return num


n=0
s2=[]
s3=[]
for i in xrange(2,987654322):
    if i
    cut2(cut3(i))
    print i,
    if len(s2)>=2 and len(s3)>=1:#每次处理完一个数就去清理下数组
        s2.pop(0)
        s2.pop(0)
        s3.pop(0)
        n+=1
print n
bubuko.com,布布扣

987654321的阶乘转12进制末尾几个0?,布布扣,bubuko.com

987654321的阶乘转12进制末尾几个0?

原文:http://www.cnblogs.com/Yeah-come-on/p/3593720.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!