我的解法,求大神给个更好的,觉得这个算法太慢了:
#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
987654321的阶乘转12进制末尾几个0?,布布扣,bubuko.com
原文:http://www.cnblogs.com/Yeah-come-on/p/3593720.html