Python-特殊的数字、回文数、杨辉三角形、查找整数 程序设计

特殊回文数

问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899

方法一:

n = int(input())
ls = []
for i in range(100, 1000): #遍历100到999之间的数字(求一半的回文数)
    s = str(i)
    sum5 = 0 #用来保存求和后的值
    sum6 = 0
    num5 = s + s[1::-1] #组合回文数(5位的)
    num6 = s + s[::-1] #组合回文数(6位的)
    for x in num5: #遍历5位回文数,求各位数字之和
        sum5 += int(x)
    for y in num6:
        sum6 += int(y)
    if sum5 == n:
        ls.append(int(num5))
    if sum6 == n:
        ls.append(int(num6))
ls.sort()
for i in ls:
    print(i)

方法二:

a =int(input())
for i in range(10000,1000000):
    num = str(i) #转为字符串
    if num == num[::-1]:
        result = 0
        for j in num:
            result += int(j)
        if result == a:
            print(num)

回文数

问题描述
  1221是一个非常特殊的数,它从左边读和从右边读是一样的, 编程求所有这样的四位十进制数。
输出格式
  按从小到大的顺序输出满足条件的四位十进制数。

方法一:

ls = []
for i in range(10, 100): #遍历10到99的数字
    s = str(i)
    num4 = s + s[::-1]
    if num4 == num4[::-1]:
        ls.append(num4)   
ls.sort()
for i in ls:
    print(i)

方法二:

ls = []
for i in range(10, 100):
    s = str(i)
    num4 = s + s[::-1]
    ls.append(num4)   
for i in ls:
    print(i)

方法三:

for i in range(10, 100):
    res = str(i) + str(i)[::-1]
    print(res)

特殊的数字

问题描述
  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。
编程求所有满足这种条件的三位十进制数。
输出格式
  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
  
方法一:

ls = []
for i in range(100,1000):
    n = str(i)
    if int(n) == int(n[0])**3+int(n[1])**3+int(n[2])**3:
        ls.append(n)
for j in ls:
    print(j)

方法二:

ls = []
for i in range(100,1000):
    n = str(i)
    if int(n) == pow(int(n[0]),3)+pow(int(n[1]),3)+pow(int(n[2]),3):
        ls.append(n)
for j in ls:
    print(j)

杨辉三角形

问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行: 
1  
1 1  
1 2 1  
1 3 3 1 
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,
中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1

方法一:

N= [1]
n =int(input())
for i in range(n):
    for j in N:
        print(j,end=' ')
    print()
    N.append(0)
    N = [N[k]+N[k-1] for k in range(len(N))] #巧用列表推导式
#N=[1,0]---->N=[1,1]---[1,1,0]--->N=[1,2,1]---[1,2,1,0]---->N=[1,3,3,1]---[1,3,3,1,0]
#k=0,1 N[0]+N[-1]=1+0 N[1]+N[0]=0+1;k=0,1,2 N[0]+N[-1]=1 N[1]+N[0]=2 N[2]+N[1]=1

方法二:

s = [[1]]
n = int(input())
for i in range(1,n):
    swap = s[-1] + [0] #[1,0]
    cul = [1]
    for j in range(len(swap)-1):
        cul.append(swap[j]+swap[j+1]) #[1,1]
    s.append(cul) #[[1],[1,1]]
for k in range(n):
    a = s[k]
    for z in range(len(a)):
        print(a[z],end=' ')
    print(' ')

查找整数

问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2

方法一:

n = int(input())
ls = []
ls = input().split()
#print(ls)
a =input()
if a in ls:
    print(int(ls.index(a))+1) #列表的index()函数可以输出元素第一次出现的索引(序号)
else:
    print(-1)

方法二:

n=int(input())
b=list(map(int,input().split()))
c=int(input())
k=1
for i in b:
    if c==i:
        print(k)
        break
    k=k+1
else:print(-1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值