BASIC 6-10
BASIC-6 杨辉三角形
'''
问题描述
杨辉三角形又称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 = int(input())
list = []
list = [[0]*n for i in range (n)] # n代表的是n*n维数组
for i in range(n):
# 换成n也可以,i+1的意思是:只为该赋值的位置赋值
for j in range(i+1):
if j == 0: # 第一个数
list[i][j] = 1
else :
list[i][j] = list[i-1][j-1]+list[i-1][j] # 杨辉三角规律
for i in range(n):
for j in range(n):
if list[i][j] != 0:
print(list[i][j],end = ' ') # 打印一行中间用空格
print(end = '\n') # 换行操作
【知识点】
1、创建二维列表:list = [[0]*n for i in range (n)]
2、如果n为4,列表应该是[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
BASIC-7 特殊数字
'''
问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,
即153=1*1*1+5*5*5+3*3*3。
编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
'''
憨憨解法
for i in range(100,1000):
a = i//100
b = i // 10 % 10
c = i % 10
if i == a**3 + b**3 + c**3:
print(i)
【知识点】
1、只适合3位数
2、注意python中,/
与//
的区别
高逼格解法
n = 100
while n < 1000:
i = str(n)
s = int(i[0])**3+int(i[1])**3+int(i[2])**3
if n == s:
print(s)
n = n + 1
【知识点】
1、将字母转化为字符串:i = str(n)
2、i[0]
表示列表中的第一位数字(字符格式)
BASIC-8 回文数
'''
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,
编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
'''
憨憨解法
n = 1000
while n < 10000:
i = str(n)
if i[0]==i[3] and i[1]==i[2] :
print(n)
n = n + 1
【知识点】
1、将字母转化为字符串:i = str(n)
2、i[0]
表示列表中的第一位数字(字符格式)
高逼格解法
n = 1000
while n < 10000:
i = str(n)
if i == i[::-1] :
print(n)
n = n + 1
【知识点】
i[::-1]
表示:将i列表里的元素逆序
BASIC-9 特殊的回文数
'''
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,
满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
'''
高逼格解法
n = int(input())
for num in range(10000, 1000000):
temp = str(num)
if temp[0:] == temp[::-1]: #判断是否是回文数
if sum(list(map(int, temp))) == n:
print(num)
【知识点】
map
先对temp
转换list
表示转换为列表sum
表示直接对列表里面的int
型数字求和
憨憨解法
def is_hui(i):
a=str(i)
if a==a[::-1]:
return True
else:
return False
def he(i,n):
a=str(i)
b=sum(int(a[j])for j in range(len(a)))
if n==b:
return True
else:
return False
n=int(input())
for i in range(10000,1000000):
if is_hui(i):
if he(i,n):
print(i)
【知识点】
b=sum(int(a[j])for j in range(len(a)))
对str类型的数字进行求和
BASIC-13 数列排序
'''
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
'''
憨憨解法
n = int(input())
array = list(input().split())
for i in range(n):
array[i] = int(array[i])
array.sort(reverse = False)
for i in range(n):
array[i] = int(array[i])
print(array[i], end = ' ')
【知识点】
输入->转整形->排序->转整形
高逼格解法
n = int(input())
arr = list(map(int,input().split()))
arr.sort(reverse = False)
for i in range(n):
print(arr[i],end=' ')
【知识点】
- 1、
map(int,input().split())
表示整形输入
2、外面套一个list
表示转化为列表格式 - 1、
sort
直接排序
2、reverse
表示是否是降序,True
表示降序,False
表示升序
3、注意:False和True
必须首字母大写