题目 1 :基础练习 杨辉三角形
解题思路
”第i+1行是(a+b)i的展开式的系数“,因此 使用 C i k C_{i}^{k} Cik 计算
方法二:二维数组
代码
def factorial(n):
"""
计算阶乘
:param n:要计算的数
:return: 结果
"""
f = 1
for i in range(1, n+1):
f = f * i
return f
def cik(n, k):
"""
计算组合数
:param n:下数
:param k:上数
:return:组合数结果
"""
return int(factorial(n) / (factorial(k) * factorial(n-k)))
n = int(input())
for i in range(1, n+1):
for j in range(1, i+1):
print(cik(i-1, j-1), end=' ')
print()
# 方法二
n = int(input())
num = [[0 for j in range(n)] for i in range(n)]
num[0][0] = 1
print(1)
for i in range(1, n):
num[i][0] = 1
print(1, end=' ')
for j in range(1, i+1):
num[i][j] = num[i-1][j-1] + num[i-1][j]
print(num[i][j], end=' ')
print()
题目 2 基础练习 特殊的数字
解题思路
判断
代码
def is_ans(n):
a = n % 10
b = (n // 10) % 10
c = (n // 100) % 10
if n == pow(a, 3) + pow(b, 3) + pow(c, 3):
print(n)
for i in range(100, 1000):
is_ans(i)
题目 3 :基础练习 回文数
解题思路
python 切片,正序和逆序相等
代码
for i in range(1000, 10000):
if i == int(str(i)[::-1]):
print(i)
题目 4 :基础练习 特殊回文数
解题思路
python 切片,正序和逆序相等
运行超时,因为每次都计算了判断,后文方法 判断不是回文数后,不执行后续判断
代码
""" 运行超时,因为每次都计算了判断,后文方法 判断不是回文数后,不执行后续判断
n = int(input())
for i in range(10000, 1000000):
iStr = str(i)
sum = 0
for j in range(len(iStr)):
sum += int(iStr[j])
if iStr == iStr[::-1] and sum == n:
print(i)
"""
def is_pal(num):
num = str(num)
if num == num[::-1]:
return True
else:
return False
def sum_num(num):
sum = 0
num = str(num)
for i in range(len(num)):
sum += int(num[i])
return sum
n = int(input())
for num in range(10000, 1000000):
if is_pal(num) and sum_num(num) == n:
print(num)