1.求列表数字 L=[2,5,3,50]相乘结尾0的个数
思路
将10分解为2*5,注意这里只能分解为2*5,所以我们可以将列表L内的数字分解为因数2和5的个数。则2和5各自个数到最小值就是最终的乘积的0的个数。
解释
因为在出去了2和5的倍数之后,数字只剩[1,3,7,9]他们相乘结尾不会产生0,因此0只会在2*5的过程中发生。所以 一个 2*5会产生一个0,所以如果2比5多,则0的个数就是5的个数,如果2比5少,0的个数就是2的个数
python代码实现
count_2 = 0 # 2的个数
count_5 = 0 # 5的个数
newList =[] # 剩余的list
for i in L:
while(i%2== 0): # 计算2的个数
count_2 += 1
i /= 2
while(i%5==0): # 计算5的个数
count_5 += 1
i /= 5
newList.append(i)
if count_2 > count_5:
print (count_5)
else:
print (count_2)
2.求列表数字 L=[2,5,3,50]相乘结尾最后一位非0数的奇偶性
思路
将10分解为2*5,注意这里只能分解为2*5,所以我们可以将列表L内的数字分解为因数2和5的个数。如果2比5多则结尾第一个不为0的数肯定是偶数;如果5比2多则肯定的奇数。
解释
因为2乘以任何数都是偶数。而5只能乘以不是2也不是5的倍数,即[1,3,7,9],因此5乘以任何一个都是奇数。所以只需要计算2和5的个数,如果2比5多,则一定是偶数,否则一定是奇数
python 代码实现
count_2 = 0
count_5 = 0
newList =[]
for i in L:
while(i%2== 0):
count_2 += 1
i/= 2
while(i%5==0):
count_5 += 1
i /= 5
newList.append(i)
if count_2 > count_5:
print ('偶数')
else:
print ('奇数')