学习Python从娃娃抓起!记录下蓝桥杯备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年蓝桥杯Python青少组中/高级国赛省赛真题解析 | 汇总
第6题
【题目描述】
给定一个正整数N,计算N除以7的商。
【输入】
一个正整数N
【输出】
N除以7的商(商为整数)
【输入样例】
8
【输出样例】
1
【代码详解】
n = int(input())
print(n//7)
【运行结果】
8
1
第7题
【题目描述】
给定一个正整数N,计算出1到N之间所有奇数的和
【输入】
一个正整数N
【输出】
1到N之间(包含1和N)所有奇数的和
【输入样例】
5
【输出样例】
9
【代码详解】
n = int(input())
ans = 0
for i in range(1, n+1):
if i%2==1:
ans += i
print(ans)
【运行结果】
5
9
第8题
【题目描述】
提示信息:
“水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。
例如:153是一个“水仙花”数,因为1+5+3等于153。
给定一个正整数N,判断100到N之间有多少个“水仙花数”。
【输入】
输入一个正整数N(100<N<1000)
【输出】
输出100到N之间(包含100和N)有多少个“水仙花数”
【输入样例】
160
【输出样例】
1
【代码详解】
n = int(input())
cnt = 0
def check(x):
x = str(x)
# print("x", x)
tot = 0
for c in x:
tot += int(c)**3
return tot == int(x)
for i in range(100, n+1):
if check(i):
cnt += 1
print(cnt)
【运行结果】
160
1
第9题
【题目描述】
有一组连续正整数,随机乱序后生成一组数据后,小蓝不小心删掉了其中一个数,已知所删掉的这个数不是这组数据中最小的也不是最大的,现在请你编写程序帮助小蓝找到删除的那个数。
【输入】
按照“编程实现”中的描述模仿输入一组这样的正整数(正整数之间以英文逗号隔开),在输入的时候少一个数(这个数不是这组数据中最小的也不是最大的),这个数作为小蓝删除的那个数,且加上小蓝删除的那个数这组数据是连续的
【输出】
输出删除掉的那个数
【输入样例】
3,2,4,6,7
【输出样例】
5
【代码详解】
ls = [int(i) for i in input().split(',')]
ls = sorted(ls)
tot = 0
for i in range(ls[0], ls[-1]+1):
tot += i
# print(tot)
print(tot - sum(ls))
【运行结果】
3,2,4,6,7
5
第10题
【题目描述】
提示信息:
有一个密室逃脱游戏,有100间密室连在一排。密室编号是从1开始连续排列已知排到第100间密室,如下图:
|1|2|3|4|5|6|…|99|100|
游戏规则:
- 玩家初始位置在1号密室;
- 每次玩家可以进入右边的一个密室,也可以跳过一个密室进入下个密室(如:当玩家当前在3号密室,他可以进入4号密室也可以进入5号密室);
- 有毒气的密室不能进入需要避开。
给定三个正整数X,Y,M( X < Y < M ≤ 100 X\lt Y\lt M\le 100 X<Y<M≤100),表示三个密室编号。X号密室和Y号密室有毒气泄露,不能进入,玩家需要进入到M号密室。按照游戏规则进入M号密室有多少种路线方案。
例如:X=2,Y=4,M=7,进入M号密室有2种路线方案,分别是1->3->5->6->7路线和1->3->5->7路线。
【输入】
三个正整数X,Y,M( X ≤ Y ≤ M X\le Y\le M X≤Y≤M),X和Y表示有毒气密室编号,M表示需要进入的密室编号,且三个正整数之间以英文逗号隔开
【输出】
进入M号密室有多少种路线方案
【输入样例】
2,4,7
【输出样例】
2
【代码详解】
#f(n) = f(n-1) + f(n-2)
x,y,m = [int(i) for i in input().split(",")]
f = [0, 1]
for i in range(2, m+1):
if i == x or i == y:
f.append(0)
else:
f.append(f[i-1]+f[i-2])
print(f[-1])
【运行结果】
2,4,7
2
第11题
【题目描述】
有一个N * N的矩阵方格和N个棋子,现在需要将N个棋子按要求放置到矩阵方格中。
要求如下:
1.任意两个棋子不能在同一行
2.任意两个棋子不能在同一列
3.任意两个棋子不能在同一对角线上(下图红色线段都为对角线)
根据以上要求,问N个棋子放置到N * N矩阵方格中有多少种放置方案
例如:4 * 4的矩阵方格,4个棋子,有2种放置方案
【输入】
输入一个正整数 N(1<N<11),表示一个 N*N 的矩阵方格和 N 个棋子数量
【输出】
输出 N 个棋子按要求放置到N * N的矩阵方格中有多少种放置方案
【输入样例】
4
【输出样例】
2
【代码详解】
N = int(input())
chess = [['O' for i in range(N)] for j in range(N)]
def checkcol(col):
for row in range(N):
if chess[row][col] == 'X':
return False
return True
def checkslant(row, col):
for k in range(1, N):
d = [(k,k), (-k,-k), (k,-k), (-k,k)]
for i,j in d:
if 0<=row+i<N and 0<=col+j<N and chess[row+i][col+j] == 'X':
return False
return True
def dfs(row):
global cnt
if row == N:
# for i in chess:
# for j in i:
# print(j, end=' ')
# print()
# print()
cnt += 1
return
for col in range(N):
if checkcol(col) and checkslant(row, col):
chess[row][col] = 'X'
dfs(row+1)
chess[row][col] = 'O'
cnt = 0
dfs(0)
print(cnt)
【运行结果】
4
2