image

编辑人: 青衫烟雨

calendar2025-06-15

message7

visits872

第12届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2020年11月真题答案及解析

一、实操题

1、编程实现:

输入一个正整数,输出这个正整数是一个几位数。

输入描述:

输入一个正整数

输出描述:

输出这个正整数是一个几位数


样例输入:

12

样例输出:

2

参考答案:br />```pythondef count_digits(n):count = 0while n > 0:n //= 10count += 1return countn = int(input("请输入一个正整数:"))print(f"n是一个count_digits(n)位数")```

解析:【喵呜刷题小喵解析】

要判断一个正整数是几位数,可以通过不断地除以10并计数来实现。当正整数变为0时,计数的结果即为该数的位数。

在这个程序中,首先定义了一个函数`count_digits`,接受一个正整数`n`作为输入,通过循环将`n`除以10,并计数,直到`n`变为0。函数返回计数的结果,即`n`的位数。

在主程序中,通过`input`函数获取用户输入的正整数,并调用`count_digits`函数计算其位数,最后输出结果。

2、编程实现:

输入一个正整数,然后分行输出这个正整数奇数位上的数(个位数为第一位)。

输入描述:

输入一个正整数

输出描述:

分行输出这个正整数奇数位上的数


样例输入:

123

样例输出:

3
1

参考答案:br />```pythonn = int(input())str_n = str(n)result = []for i in range(len(str_n)):if i % 2 == 1:result.append(str_n[i])for i, s in enumerate(result):print(s, end='\n' if i == len(result) - 1 else '\n')```

解析:【喵呜刷题小喵解析】

首先,我们需要从用户那里获取一个正整数。然后,我们需要将这个整数转换为字符串,因为字符串的索引可以直接对应到数字的各个位数。

接下来,我们遍历这个字符串的每一个字符(也就是数字的每一个位数),如果索引是奇数(也就是位数是奇数),我们就将这个字符添加到结果列表中。

最后,我们遍历结果列表,将每一个字符打印出来,并在每个字符后面加上换行符。如果这是最后一个字符,我们就不需要在其后面加换行符,否则,我们需要加。这样,我们就可以得到奇数位上的数字,并且每个数字占一行。

3、提示信息:

平方是一种运算,比如:a的平方表示a×a。

例如:2的平方为4 (也就是2*2的积)

例如:4的平方为16 (也就是4*4的积)

编程实现:

输入一个正整数N(N<30),输出1到N(包含1和N)之间所有正整数的平方,且所输出的平方数之间以英文逗号隔开。

输入描述:

输入一个正整数N(N<30)

输出描述:

输出所有正整数的平方数,且所输出的平方数之间以英文逗号隔开


样例输入:

3

样例输出:

1,4,9

参考答案:br />根据题目要求,我们需要编写一个程序,输入一个正整数N,然后输出从1到N之间所有正整数的平方,且所输出的平方数之间以英文逗号隔开。在Python中,我们可以使用for循环来遍历1到N之间的所有正整数,然后计算它们的平方,并将结果以英文逗号隔开输出。具体的代码实现如下:```pythonN = int(input())result = []for i in range(1, N+1):square = i**2result.append(str(square))print(','.join(result))```在这个程序中,我们首先使用input函数获取用户输入的N值,并将其转换为整数类型。然后,我们使用for循环遍历1到N之间的所有正整数,计算它们的平方,并将结果以字符串形式添加到result列表中。最后,我们使用join函数将result列表中的所有字符串以英文逗号隔开输出。

解析:【喵呜刷题小喵解析】

本题目是一个典型的算法编程题,主要考查了Python中的循环、列表、字符串等基本概念。根据题目要求,我们需要编写一个程序,输入一个正整数N,然后输出从1到N之间所有正整数的平方,且所输出的平方数之间以英文逗号隔开。

在解题过程中,我们需要注意以下几点:

1. 输入的N值需要小于30,这是题目给出的限制条件。
2. 我们需要使用循环来遍历1到N之间的所有正整数,并计算它们的平方。
3. 我们需要将每个平方数以字符串形式添加到结果列表中,因为题目要求输出结果之间以英文逗号隔开,需要使用字符串拼接操作。
4. 最后,我们需要使用join函数将结果列表中的所有字符串以英文逗号隔开输出。

通过以上的分析和解答,我们可以得出一个正确的程序实现,并给出相应的输出结果。

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行输入第二个正整数

输出描述:

输出这两个正整数的最大公约数M及最小公倍数N(M和N之间以一个英文逗号隔开)      


样例输入:

4
6

样例输出:

2,12

参考答案:br />输入两个正整数,输出它们的最大公约数M及最小公倍数N。

解析:【喵呜刷题小喵解析】
为了解决这个问题,我们可以使用欧几里得算法(辗转相除法)来找到两个数的最大公约数,然后使用公式 "两数的乘积 = 两数的最大公约数 × 两数的最小公倍数" 来找到最小公倍数。

首先,我们需要读取两个正整数。然后,我们可以使用欧几里得算法来找到这两个数的最大公约数。欧几里得算法的基本思想是:对于非零整数a和b,gcd(a, b) = gcd(b, a mod b)。然后,我们可以使用公式 "两数的乘积 = 两数的最大公约数 × 两数的最小公倍数" 来找到最小公倍数。

具体步骤如下:

1. 读取两个正整数a和b。
2. 使用欧几里得算法找到a和b的最大公约数。
3. 使用公式 "两数的乘积 = 两数的最大公约数 × 两数的最小公倍数" 来找到最小公倍数。
4. 输出最大公约数和最小公倍数,以英文逗号隔开。

注意,由于题目要求输入的正整数范围在1到200之间,因此我们可以使用int类型来存储这些整数。另外,由于输出要求最大公约数和最小公倍数之间以一个英文逗号隔开,因此我们需要使用字符串格式化来输出这两个数。

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中有多少个数位递增数


样例输入:

15

样例输出:

5

参考答案:对于输入的正整数n,我们需要遍历从10到n的所有整数,并检查每个整数是否为数位递增数。如果是数位递增数,则计数器加1。最后输出计数器的值。

解析:【喵呜刷题小喵解析】:
这个问题可以通过遍历从10到n的所有整数来解决。对于每个整数,我们可以检查其每个数位是否小于等于其右边的数位。如果是,则该整数是数位递增数,计数器加1。最后,返回计数器的值。

由于题目中给出了10
虽然这个解决方案可以工作,但它的时间复杂度是O(n),其中n是输入的整数。在某些情况下,这可能不是最优的解决方案,因为它需要对每个整数进行数位检查。然而,由于题目中的n值范围相对较小(10

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第12届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2020年11月真题答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share