美文网首页
求一些数字相乘结尾的值

求一些数字相乘结尾的值

作者: 一条路上的咸鱼 | 来源:发表于2018-10-24 21:56 被阅读0次

    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 ('奇数')

    相关文章

      网友评论

          本文标题:求一些数字相乘结尾的值

          本文链接:https://www.haomeiwen.com/subject/xjhftqtx.html