特殊回文数
问题描述
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)