算法基础篇一
1.打印出所有不超过n(n<256)的,其平方具有对称性质的数。如11*11=121.
for i in range(1,256):
if str(i**2)==str(i**2)[::-1]:##注意是平方
print(i)
解释:如果逆序之后和原来的结果相同的话那么说明是具有对称性质的数,从1开始取,0的平方也是0,原来的字符串和逆序之后的字符串相等的话说明是对称的。
2.某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少中不同的邮资?
res=[]
for x in range(6):
for y in range(5):
for z in range(7):
res.append(x*8+y*10+z*18)
print(len(set(res))-1)
解释:set就是会将重复的字符给去掉,得到不重复的
3.判断正反序列
for i in range(1000,10000):
if str(i)==str(i*9)[::-1]:
print(i)
4.判断等差数列
def get_res(nums):
nums.sort()
d=nums[1]-nums[0]
for i in range(len(nums)-1):
if nums[i+1]!=nums[i]+d:
return 'Impossible'
return 'Possible'
n=int(input())
l1=list(map(int,input().split(' ')))
print(get_res(l1))
5.交错01取最长
def get_max_length(nums):
if len(nums)==0:
return 0
d=1
res=0##初始化res为0
for i in range(len(nums)-1):
if nums[i+1]!=nums[i]:
d+=1
else:
d=1
res=max(res,d)##将每次的最大值取出来
return res
num=str(input())
res=get_max_length(num)
print(res)