一、实操题
1、输入一个正方形的边长(a)及一个长方形的长与宽(b、c),然后比较两个 图形的面积。如果长方形面积大,输出“RECTANGLE”;如果正方形面积 大,输出“SQUARE”;如果一样大,输出“SAME”。
输入描述:
输入正整数 a、b、c(0<a、b、c≤1000),分别代表正方形的边长和长方形的长与宽
输出描述:
如果长方形面积大,输出“RECTANGLE”
如果正方形面积大,输出“SQUARE”
如果一样大,输出“SAME”
【样例输入】
5 4 6
【样例输出】
SQUARE
参考答案:```# 声明三个变量a, b, c = map(int, input().split())# 计算面积square_area = a**2rectangle_area = b * c# 比较面积if square_area > rectangle_area:print("SQUARE")elif square_area < rectangle_area:print("RECTANGLE")else:print("SAME")```
解析:【喵呜刷题小喵解析】:
本题要求比较正方形和长方形的面积,并根据面积大小输出对应的结果。
首先,我们需要从输入中读取正方形的边长(a)和长方形的长与宽(b、c)。这里使用 `input().split()` 方法将输入的字符串按照空格分割,然后使用 `map(int, ...)` 将分割后的字符串列表转换为整数列表,最后使用元组解包将这三个整数分别赋值给变量 a、b、c。
接下来,我们计算正方形和长方形的面积。正方形的面积计算公式为 a^2,长方形的面积计算公式为 b * c。
最后,我们比较两个图形的面积,如果正方形面积大于长方形面积,输出 "SQUARE";如果长方形面积大于正方形面积,输出 "RECTANGLE";如果两个图形的面积相等,输出 "SAME"。这里使用条件语句 if-elif-else 进行比较和输出。
2、请你写一个含有多个 “lanqiao” 字样的句子,然后输出句子中出现 “lanqiao” 字样的个数。(注意:“lanqiao” 字样可以是不同大小写字母的组合,例如: LanQIAO、LanQiao 等)
输入
输入一个字符串(0≤字符串长度≤100)。
输出
输出该字符串中 “lanqiao” 字样出现的次数。(请注意: “lanqiao” 字样可以是不同大小写字母的组合。)
样例输入
Lanqiaoceping,lanqiaoceping,Lanqiaoceping
样例输出
3
参考答案:br />输入字符串为:Lanqiaoceping,lanqiaoceping,Lanqiaoceping输出结果为:3
解析:【喵呜刷题小喵解析】
在这个问题中,我们需要统计输入字符串中“lanqiao”字样出现的次数。需要注意的是,“lanqiao”字样可以是不同大小写字母的组合。
首先,我们观察输入字符串“Lanqiaoceping,lanqiaoceping,Lanqiaoceping”,可以看到“lanqiao”字样出现了3次,分别是“Lanqiaoceping”、“lanqiaoceping”和“Lanqiaoceping”。
在统计时,我们需要注意以下几点:
1. 不区分大小写:例如,“lanqiao”和“LanQiao”都被视为相同的字样。
2. 不区分前后单词:例如,“lanqiao”和“cepinglanqiao”都被视为出现了“lanqiao”字样。
根据以上规则,我们可以统计出输入字符串中“lanqiao”字样出现了3次。因此,输出结果为3。
3、【编程实现】
蓝桥杯 STEMA 测评,成绩排名与证书的对应关系如下:
排名 奖项等级
前 10% 一等奖
前 30% 二等奖
前 60% 三等奖
前 80% 优秀奖
已知小蓝同学的成绩及其他所有考生的成绩,你能帮助小蓝计算一下他能获得的奖项等级吗?
输入
第一行为一个整数 score,(0≤score≤100)代表小蓝的成绩。
第二行为一个整数 n,(10≤n≤1000)代表参加测评的总人数。
第三行为n 个整数,每个整数代表每个参加测评考生的成绩,中间用空格分隔,成绩范围同 score。
输出
A、B、C、D、E 五个字母,分别代表一、二、三等奖,优秀奖及未获奖。注意:分数相同则等级相同,后续选手排名顺延。
【结果样例】
样例输入
95 10 99 95 90 99 80 70 71 78 77 60
样例输出
B
样例说明:小蓝在 10 名参赛选手中排名第 3,属于前 30%,故获得二等奖,
所以输出 B。另,两名 99 分的选手由于分数相同,所以并列一等奖。
参考答案:根据输入的成绩和排名信息,我们需要计算出小蓝的成绩排名,然后根据排名确定他能获得的奖项等级。首先,我们需要将所有参加测评的考生的成绩放入一个数组中,然后按照成绩从高到低进行排序。接着,我们可以计算出小蓝的成绩排名。如果小蓝的成绩排名在前10%,则输出"A",表示他获得一等奖;如果小蓝的成绩排名在前30%,则输出"B",表示他获得二等奖;如果小蓝的成绩排名在前60%,则输出"C",表示他获得三等奖;如果小蓝的成绩排名在前80%,则输出"D",表示他获得优秀奖;如果小蓝的成绩排名超过80%,则输出"E",表示他未获奖。
解析:【喵呜刷题小喵解析】:
本题是一道编程题目,要求根据小蓝的成绩和所有参加测评的考生的成绩,计算出小蓝能获得的奖项等级。
首先,我们需要理解题目中给出的成绩排名与证书的对应关系。根据题目,前10%的考生获得一等奖,前30%的考生获得二等奖,前60%的考生获得三等奖,前80%的考生获得优秀奖,超过80%的考生未获奖。
接下来,我们需要根据输入的成绩和排名信息,计算出小蓝的成绩排名。具体地,我们可以将所有参加测评的考生的成绩放入一个数组中,然后按照成绩从高到低进行排序。排序后,我们可以找到小蓝的成绩在数组中的位置,从而计算出他的成绩排名。
最后,我们可以根据小蓝的成绩排名,确定他能获得的奖项等级,并输出相应的字母。如果小蓝的成绩排名在前10%,则输出"A";如果小蓝的成绩排名在前30%,则输出"B";如果小蓝的成绩排名在前60%,则输出"C";如果小蓝的成绩排名在前80%,则输出"D";如果小蓝的成绩排名超过80%,则输出"E"。
在输出时,我们需要注意题目中的要求,即分数相同则等级相同,后续选手排名顺延。这意味着如果有多名考生分数相同,则他们的奖项等级相同,后续的考生排名需要顺延。在本题中,有两名考生成绩为99分,由于分数相同,所以他们的奖项等级相同,都为一等奖。因此,在计算排名时,需要将这两名考生视为一个整体,他们的排名应该按照他们的总成绩进行排序。
4、有一张 m×n 个小方格的地图,一个机器人位于地图的左上角(如图标记为 Start 的地方),它每步只能向右或者向下移动一格,如果走到右下角的终点(如图标记为 Finish 的地方),有多少种不同的方法?
例如,一个 3×2 的地图,方法数是 3 种,分别是:
右 → 右 → 下
右 → 下→ 右
下 → 右 → 右
输入格式
两个整数 m(m <100)和 n(n < 100),代表地图的行数和列数
输出格式
一个整数,表示方法数
样例输入
3 2
样例输出
3
参考答案:根据题目,我们可以使用组合数学中的卡特兰数来解决这个问题。卡特兰数的一般公式为 C(n, 2k) - C(n-1, 2k-1),其中 n = m + n,k = min(m, n)。对于给定的地图,其行数为 m,列数为 n。由于机器人每步只能向右或者向下移动,所以其总的步数应为 m + n。我们需要计算从 (m+n) 步中选出 k 步向右,其余 (m+n-k) 步向下的组合数,其中 k 的取值范围是 [0, min(m, n)]。因此,方法数可以通过卡特兰数的公式计算,即 C(m+n, 2k) - C(m+n-1, 2k-1),其中 k 的取值范围是 [0, min(m, n)]。
解析:【喵呜刷题小喵解析】:
这个问题是一个经典的组合数学问题,可以使用卡特兰数来解决。卡特兰数是一种特殊的组合数,它的定义和性质使得它适用于解决一些特定的问题,比如这个机器人路径问题。
在这个问题中,机器人从地图的左上角走到右下角,每步只能向右或者向下移动。我们可以将机器人的移动路径看作是从 (0, 0) 到 (m, n) 的一个格点路径。由于机器人每步只能向右或者向下移动,所以其总的步数应为 m + n。
我们需要计算从 (m+n) 步中选出 k 步向右,其余 (m+n-k) 步向下的组合数,其中 k 的取值范围是 [0, min(m, n)]。这个组合数可以通过卡特兰数的公式计算,即 C(m+n, 2k) - C(m+n-1, 2k-1)。
具体实现时,我们需要遍历 k 的取值范围,对于每个 k 值,计算卡特兰数公式中的两个组合数,然后将它们相减得到方法数。最后,将所有方法数累加起来,即为最终的方法数。
需要注意的是,由于 m 和 n 的取值范围较小(m < 100, n < 100),我们可以直接计算组合数,而不需要使用动态规划等优化算法。
5、循环以及循环的嵌套,是同学们编写程序时常见的操作,如果用一对括号来代表一个循环的话那么三个循环出现的合法组合有 5 55 种,分别为∶ “{}{}{}”、"{{{}}}"、"{{}{}}"、"{{}}{}"、"{}{{}}"。
输入格式
输入一个数字n(1≤n≤30),代表循环的个数。
输出格式
输出 n nn 个循环的合法组合数。
样例输入
3
样例输出
5
参考答案:对于n个循环的合法组合数,可以通过递归的方式求解。具体地,当n=1时,只有1种组合;当n=2时,有2种组合;当n=3时,有5种组合。对于n>3的情况,可以将问题分解为n-1个子问题,即第1个循环为空、第1个循环为{}、第1个循环为且第2个循环为空、第1个循环为且第2个循环为{}、第1个循环为{}且第2个循环为。对于前三种情况,相当于是求n-1个循环的合法组合数;对于后两种情况,相当于是求n-2个循环的合法组合数。因此,n个循环的合法组合数可以通过递推式F(n)=2*F(n-1)+F(n-2)求解。
解析:【喵呜刷题小喵解析】:
这个问题是一个典型的动态规划问题,可以通过递推式求解。具体地,设F(n)表示n个循环的合法组合数,则有F(1)=1,F(2)=2,F(3)=5。对于n>3的情况,可以通过递推式F(n)=2*F(n-1)+F(n-2)求解。这个递推式的含义是,对于n个循环的合法组合,可以分成三类:第一类是第1个循环为空,剩下的n-1个循环任意组合;第二类是第1个循环为{{}},剩下的n-1个循环任意组合;第三类是第1个循环为{},第2个循环为空或{{}},剩下的n-2个循环任意组合。因此,n个循环的合法组合数可以通过递推式求解。在实际编程中,可以通过定义一个数组来保存F(1)到F(n)的值,然后依次计算出F(n)的值。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!