第一题
输入一个正整数n,求n!(即阶乘)末尾0的个数
**方法一**
n=input("please input n:")
count=0
#计算阶乘
def factorial(x1,x2):
return x1*x2
#计算阶乘末尾0的个数
def factorial_zero(x):
global count #引用全局变量
if x%10==0:
count=count+1
factorial_zero(x/10)
return count
result=reduce(factorial,range(1,n+1))
print result #打印阶乘
print factorial_zero(result)
**方法二**
count=0
zero=0 #变量zero记录0的个数
def caculate(num):
global count,zero
for i in range(1,num):
count=num/(5**i)
zero+=count
if count==0:
return zero
n=input("please input n:")
print caculate(n)
第二题
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
#以空格分隔,将输入的数字存入列表中
l=[int(i) for i in raw_input().split()]
def compare(x,y):
if str(x)+str(y)>str(y)+str(x):
return -1
elif str(x)+str(y)<str(y)+str(x):
return 1
else:
return 0
print sorted(l,compare)
第三题
回文串的设计与判断
#判断回文字符串
def Palindrome(string):
if string==string[::-1]:
return True
else:
return False
strA=raw_input()
strB=raw_input()
#字符串A长度为length,共有length+1种插法
for i in range(0,len(strA)+1):
newstr=strA[:i]+strB+strA[i:]
if Palindrome(newstr):
count+=1
print count