答案
解析
第 12 届蓝桥杯 Python 青少组中 / 高级组选拔赛( STEMA ) 2020 年 11 月
真题
题目总数:5 总分数:128
编程题
第 1 题 问答题
编程实现:
输入一个正整数,输出这个正整数是一个几位数。
输入描述:
输入一个正整数
输出描述:
输出这个正整数是一个几位数
样例输入:
样例输出:
评分标准: (下列各评分项单独计分,得分累加;共 18 个计分点)
6分:能正确输出一组数据;
6分:能正确输出两组数据;
6分:能正确输出三组数据。
12
2
n=int (input ())
b=0
while (n!= 0):
n =int (n/10 )
b += 1
print (b)
1
2
3
4
5
6
答案
解析
第 2 题 问答题
编程实现:
输入一个正整数,然后分行输出这个正整数奇数位上的数 ( 个位数为第一位 ) 。
输入描述:
输入一个正整数
输出描述:
分行输出这个正整数奇数位上的数
样例输入:
样例输出:
评分标准: (下列各评分项单独计分,得分累加;共 20 个计分点)
6分:能正确输出一组数据;
6分:能正确输出两组数据;
8分:能正确输出三组数据。
第 3 题 问答题
提示信息:
平方是一种运算,比如: a 的平方表示 a×a 。
例如:2 的平方为 4 ( 也就是 2*2 的积 )
例如:4 的平方为 16 ( 也就是 4*4 的积 )
编程实现:
输入一个正整数N(N<30) ,输出 1 到 N( 包含 1 和 N) 之间所有正整数的平方,且所输出的平方数之间以英文逗号隔
开。
输入描述:
输入一个正整数N(N<30)
输出描述:
输出所有正整数的平方数,且所输出的平方数之间以英文逗号隔开
123
3
1
n=int (input ())
b=1
while (n!= 0):
if b %2== 1:
print (n%10 )
n =int (n/10 )
b += 1
1
2
3
4
5
6
7
答案
解析
样例输入:
样例输出:
评分标准: (下列各评分项单独计分,得分累加;共 25 个计分点)
5分:能正确输出一组数据;
5 分:能正确输出两组数据;
7 分:能正确输出三组数据;
8分:能正确输出四组数据。
第 4 题 问答题
提示信息:
倍数与约数:如果 a 能被 b 整除, a 就叫做 b 的倍数, b 就叫做 a 的约数。约数和倍数都表示一个整数与另一个整数
的关系,不能单独存在。
最大公约数:几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约
数。
举例:12 、 16 的公约数有 1 、 2 、 4 ,其中最大的一个是 4 ,所以 4 是 12 与 16 的最大公约数。
最小公倍数:几个自然数公有的倍数,叫做这几个数的公倍数,其中最小的一个,叫做这几个数的最小公倍
数。
举例:4 的倍数有 4 、 8 、 12 、 16 , …… , 6 的倍数有 6 、 12 、 18 、 24 , …… , 4 和 6 的公倍数有 12 、 24 , …… ,
其中最小的是12 ,所以 4 和 6 最小公倍数为 12 。
编程实现:
分别输入两个正整数(1< 正整数 <201) ,输出这两个正整数的最大公约数 M 及最小公倍数 N( 注: M 和 N 之间以一
个英文逗号隔开) 。
输入描述:
第1 行输入第一个正整数
第2 行输入第二个正整数
输出描述:
3
1,4,9
n=int (input ())
for i in range (1,n+1):
if i == n:
print (i*i)
break
print (i*i,end ="," )
1
2
3
4
5
6
答案
解析
输出这两个正整数的最大公约数 M 及最小公倍数 N(M 和 N 之间以一个英文逗号隔开 )
样例输入:
样例输出:
评分标准: (下列各评分项单独计分,得分累加;共 30 个计分点)
7分:能正确输出一组数据;
7 分:能正确输出两组数据;
8 分:能正确输出三组数据;
8分:能正确输出四组数据。
第 5 题 问答题
提示信息:
一个正整数如果任何一个数位小于等于右边相邻的数位,则称为一个数位递增数。
例如:
1135 是一个数位递增数
1024 不是一个数位递增数
题目描述:
输入一个正整数 n(10<n<10001) ,输出 10 到 n ( 包含 10 和 n) 中有多少个数位递增数。
例如:输入15 , 10 到 15 之间的数位递增数有: 11 、 12 、 13 、 14 、 15 。一共有 5 个。
输入描述:
输入一个正整数 n(10<n<10001)
输出描述:
输出 10 到 n 中有多少个数位递增数
样例输入:
4
6
2,12
a=int (input ())
b=int (input ())
for i in range (min (a,b),0,-1):
if a %i== 0 and b %i== 0:
m =i
print (i,end ="," )
break
print (int (a/m*b))
1
2
3
4
5
6
7
8
答案
解析
样例输出:
评分标准: (下列各评分项单独计分,得分累加;共 35 个计分点)
7分:能正确输出一组数据;
7 分:能正确输出两组数据;
7分:能正确输出三组数据;
7 分:能正确输出四组数据;
7分:能正确输出五组数据。
15
5
n=int (input ())
cnt =0
for i in range (11 ,n+1):
m =i
while (m!= 0 and m %10 >= int (m/10 )%10 ):
m /= 10
if m == 0:
cnt += 1
print (cnt )
1
2
第12届蓝桥杯Python青少组中_高级组选拔赛(STEMA)2020年11月真题-附答案,第12届蓝桥杯青少组Python中高级组STEMA真题及答案