Python刷题
(以下代码是在PyCharm上运行成功的,如果想要在刷题上成功运行,需要把前边的定义去掉)
10.题目描述:
给你两个正整数a和b, 输出它们的最小公倍数。
import math
a=5
b=15
c=math.gcd(a,b) #求最大公约数
d=a*b/c #求最小公倍数
print(int(d))
(该题先用系统函数求出最大公约数,通过计算可以直接求出最小公倍数,值得注意的是需要将最小公倍数转化成整型才能正确输出)
11.题目描述:
给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。
L=[4,2,25,7777777,100,3,77777777,77777777,77777777,77777777]
num2=0
num5=0
for i in L:
if i%2==0:
a = i
while a%2 == 0:
num2 =num2+1
a=a/2
if i % 5 == 0:
b = i
while b % 5 == 0:
num5=num5+1
b=b/5
print(min(num5,num2))
(该题目中只有2*5才会有一个零出现,所以我们只需要计算出列表里有多少2和多少5,求他们的最小值就可以得出结果)
12.题目描述:
给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0.。
'''结尾非零数的奇偶性'''
L=[2,8,3,50]
num2=1
for i in L:
if i%2 == 0:
num2 = 0
else:
num2 = 1
print(num2)
(跟上一道题差不多,我的理解是看这个列表中若有2的倍数则最后结果一定是偶数,输出0,否则输出1)刚刚又看了看这样写是不对的,这样写的结果是看列表的最后一个值的奇偶性,而不是相乘所有值的奇偶性,所以应该是一旦判断该列表中有2的倍数,直接跳出输出0(但是奇怪的是上述代码在刷题中竟然能通过,而加了break的竟然没有通过)
#稍有改正
'''结尾非零数的奇偶性'''
L=[2,8,3,5]
num2=1
for i in L:
if i%2 == 0:
num2 = 0
break
else:
num2 = 1
print(num2)