python学习笔记7——列表中整数乘积末尾0的问题

来源:互联网 发布:linux 启动 编辑:程序博客网 时间:2024/06/15 18:11

问题

描述1:

给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内所有数字的乘积末尾0的个数,
如样例L的结果为2.(提示:不要直接相乘,数字很多,可能溢出)

描述2:

给你一个正整数列表 L, 如 L=[2,8,3,50], 判断列表内所有数字乘积的最后一个非零数字的奇偶性,
奇数输出1,偶数输出0. 如样例输出应为0

思路

将10分解为2*5,注意这里只能分解为2*5,所以我们可以将列表L内的数字分解为因数2和5的个数。则2和5各自个数到最小值就是最终的乘积的0的个数。而如果2到个数大于5,那最终到乘积到最后一个非0数字就是偶数

解决方法

问题1

def splitList(L):    count_2=0; count_5=0    newList=[]    for item in L:        while( item%2 == 0):            count_2+=1;            item = item/2;        while( item%5 == 0):            count_5 +=1;            item = item/5;        #把item加入一个列表里面;        newList.append(item)    return newList,count_2,count_5# 其实最后发现返回最终到列表没什么用;L = [2,8,3,50]newList,count2,count5 = splitList(L)#下面判断最后一个非零数字的奇偶性,如果质因数中5的个数比2多,说明2已经用完了,最终得到到就是奇数,否则是偶数;if count2>count5:    print count5else:    print count2

问题2

def splitList(L):    count_2=0; count_5=0    newList=[]    for item in L:        while( item%2 == 0):            count_2+=1;            item = item/2;        while( item%5 == 0):            count_5 +=1;            item = item/5;        #把item加入一个列表里面;        newList.append(item)    return newList,count_2,count_5# 其实最后发现返回最终到列表没什么用;L = [2,8,3,50]newList,count2,count5 = splitList(L)#下面判断最后一个非零数字的奇偶性,如果质因数中5的个数比2多,说明2已经用完了,最终得到到就是奇数,否则是偶数;if count2>count5:    print 0else:    print 1
1 0
原创粉丝点击