算法基础篇一

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)

 

posted @ 2019-05-05 07:12  风不再来  阅读(209)  评论(0编辑  收藏  举报