🏆 全国青少年信息素养大赛

算法应用主题赛 — 智传民韵(民族文化)
难度:中等 | 时长:90 分钟 | 满分:100分
题型:5单选(10分) + 5多选(20分) + 4编程(70分)

算法应用主题赛 — 智传民韵(民族文化)(中等)
考生:— 第 1 / 14 题
--:--
第 1 题 单选题 2 分
傣族泼水节上,人们互相泼洒清水表达祝福。以下代码使用lambda表达式对祝福语按字数从少到多排序,输出结果是?
blessings = ["如意吉祥", "水", "健康平安幸福", "快乐"]
result = sorted(blessings, key=lambda x: len(x))
print(result)
第 2 题 单选题 2 分
蒙古族那达慕大会上有多项传统比赛项目。以下代码使用enumerate()函数为比赛项目编号,输出结果是?
events = ["摔跤", "赛马", "射箭", "套马"]
for i, event in enumerate(events, start=1):
    print(f"{i}.{event}", end=" ")
第 3 题 单选题 2 分
彝族火把节的传统活动分布在不同的日期举行。以下代码使用zip()函数将活动名称与日期合并,输出结果是?
activities = ["祭火", "斗牛", "赛马"]
dates = ["六月廿四", "六月廿五", "六月廿六"]
result = list(zip(activities, dates))
print(result)
第 4 题 单选题 2 分
藏族唐卡绘制中会使用多种矿物颜料,不同颜料的原价各不相同。以下代码使用map()函数对所有颜料价格统一打9折,输出结果是?
prices = [50, 80, 120, 200]
discount = list(map(lambda x: x * 0.9, prices))
print(discount)
第 5 题 单选题 2 分
侗族鼓楼的建造数量需要统计。以下代码中使用了全局变量,最终的输出结果是?
count = 0
def build_tower():
    global count
    count = count + 1
    return count
build_tower()
build_tower()
build_tower()
print(count)
第 6 题 多选题 4 分
维吾尔族木卡姆套曲数据以元组列表形式存储,每条记录为(套曲名称, 演奏时长)。以下关于sorted()中key参数的说法,哪些是正确的?
muqam = [("拉克木卡姆", 120), ("且比亚特木卡姆", 90),
         ("木夏吾莱克木卡姆", 150), ("恰尔尕木卡姆", 90)]
第 7 题 多选题 4 分
苗族银饰制作涉及多种传统工艺。给定一个用逗号分隔的工艺名称字符串,以下关于join()和split()组合应用的说法,哪些是正确的?
crafts = "熔炼,锻打,錾刻,花丝,镶嵌"
第 8 题 多选题 4 分
壮族壮锦图案数据库使用字典管理各类图案的库存数量。对于字典的常用方法,以下哪些说法是正确的?
patterns = {"龙凤纹": 5, "回字纹": 3, "云雷纹": 2}
第 9 题 多选题 4 分
土家族摆手舞的动作序列可以用迭代器逐一遍历。以下关于生成器和迭代器的说法,哪些是正确的?
第 10 题 多选题 4 分
哈尼梯田的层级结构可以用递归或迭代的方式遍历。以下关于递归与迭代的说法,哪些是正确的?
第 11 题 编程操作题 0 分

题目描述:
某民族文化展览会上,主办方收集了n件来自不同民族的手工艺品,希望将这些工艺品两两配对进行联合展示。配对规则是:两件工艺品必须来自不同的民族。请编写程序,找出所有满足条件的不同民族配对组合。
注意:(A, B)和(B, A)被视为同一对,只需要输出一次。

输入格式:
第一行输入一个整数n(1 ≤ n ≤ 100),表示手工艺品的数量。
接下来n行,每行输入一个字符串和一个民族名称,格式为"工艺品名称 民族名称",中间用空格分隔。工艺品名称和民族名称均为不含空格的字符串。

输出格式:
每行输出一对配对,格式为"工艺品A(民族A) - 工艺品B(民族B)"。
所有配对按字符串字典序从小到大排序后输出。若不存在任何配对(如所有工艺品来自同一民族),则不输出任何内容。

示例输入:

4
刺绣 苗族
马头琴 蒙古族
芦笙 侗族
唐卡 藏族

示例输出:

刺绣(苗族) - 唐卡(藏族)
刺绣(苗族) - 芦笙(侗族)
刺绣(苗族) - 马头琴(蒙古族)
芦笙(侗族) - 唐卡(藏族)
马头琴(蒙古族) - 唐卡(藏族)
马头琴(蒙古族) - 芦笙(侗族)
说明:4件工艺品来自4个不同的民族,共有C(4,2)=6种配对。输出按字符串字典序排序,Unicode码点"刺"(U+523A) < "芦"(U+82A6) < "马"(U+9A6C)。
第 12 题 编程操作题 0 分

题目描述:
苗族银饰工匠在设计新款银饰时,需要从若干种传统图案中选出恰好k种图案进行搭配。给定n种候选图案的名称,请你编写程序,输出所有可能的k种图案组合(不考虑图案的先后顺序,即"A B"和"B A"视为同一种组合)。

输入格式:
第一行输入两个整数n和k(2 ≤ k ≤ n ≤ 10),用空格分隔,表示候选图案数量和需要选取的数量。
第二行输入n个字符串(均为不含空格的图案名称),用空格分隔。

输出格式:
每行输出一种组合,图案名称之间用空格分隔。所有组合按字符串字典序从小到大排序后输出。

示例输入:

4 2
蝴蝶 龙凤 鱼纹 花卉

示例输出:

蝴蝶 花卉
蝴蝶 鱼纹
蝴蝶 龙凤
鱼纹 花卉
龙凤 花卉
龙凤 鱼纹
说明:从4种图案中选2种,共有C(4,2)=6种组合。输出按字典序排序,Unicode码点"蝴"(U+8774) < "鱼"(U+9C7C) < "龙"(U+9F99),因此蝴蝶开头的组合排在最前面。
第 13 题 编程操作题 0 分

题目描述:
藏族唐卡画师在创作时需要决定m种矿物颜料的着色顺序。不同的着色顺序会影响唐卡的最终效果。请编写程序,生成这m种颜料名称的所有排列(全排列),并将所有排列按字符串字典序排序后输出。

输入格式:
第一行输入一个整数m(2 ≤ m ≤ 6),表示颜料种类数量。
第二行输入m个字符串(均为不含空格的颜料名称),用空格分隔。

输出格式:
每行输出一种排列,颜料名称之间用空格分隔。输出行数等于m!(m的阶乘)。按整个排列字符串的字典序从小到大排序。

示例输入:

3
朱砂 石青 金粉

示例输出:

朱砂 石青 金粉
朱砂 金粉 石青
石青 朱砂 金粉
石青 金粉 朱砂
金粉 朱砂 石青
金粉 石青 朱砂
说明:3种颜料的全排列共3! = 6种。输出按字典序排序,Unicode码点"朱"(U+6731) < "石"(U+77F3) < "金"(U+91D1),因此"朱砂"开头的排列先输出,"金粉"开头的排列后输出。
第 14 题 编程操作题 0 分

题目描述:
某民族文化研究中心建立了一个民族节日数据库,每个节日记录包含四个信息:所属民族、节日名称、举办月份(1-12)、持续天数。请编写程序完成以下四项多维度分析任务:
1. 统计每个民族各有多少个节日,按民族名称字典序升序输出;
2. 找出拥有节日数量最多的民族(可能有并列),输出其民族名称;
3. 统计1到12月每个月份各有多少个节日;
4. 将所有节日按持续天数从多到少排序后输出;若天数相同,按民族名称字典序升序排列。

输入格式:
第一行输入一个整数n(1 ≤ n ≤ 100),表示节日记录的数量。
接下来n行,每行输入四个数据,格式为"民族 节日名称 月份 天数",中间用空格分隔。月份为整数1-12,天数为正整数。

输出格式:
依次输出四个部分的结果:
第一行输出"一、各民族节日数量:"。
接下来每行输出一个民族及其节日数量,格式为"民族:数量个"(按民族名称字典序升序排列)。
空一行后,输出"二、节日最多的民族(X个):"(X为最大节日数量)。
接下来输出所有拥有最多节日的民族名称,多个民族之间用顿号(、)分隔,按字典序排列。
空一行后,输出"三、节日月份分布:"。
接下来每行输出格式为"X月:Y个"(X=1到12),共12行。
空一行后,输出"四、按持续天数排序(从多到少):"。
接下来每行输出一个节日,格式为"民族 节日名称 X月 Y天",按持续天数降序排列,天数相同按民族名称升序排列。

示例输入:

6
蒙古族 那达慕 7 5
彝族 火把节 6 3
藏族 雪顿节 8 7
傣族 泼水节 4 3
彝族 彝族年 11 7
苗族 苗年 10 15

示例输出:

一、各民族节日数量:
傣族:1个
彝族:2个
苗族:1个
蒙古族:1个
藏族:1个
二、节日最多的民族(2个):
彝族
三、节日月份分布:
1月:0个
2月:0个
3月:0个
4月:1个
5月:0个
6月:1个
7月:1个
8月:1个
9月:0个
10月:1个
11月:1个
12月:0个
四、按持续天数排序(从多到少):
苗族 苗年 10月 15天
彝族 彝族年 11月 7天
藏族 雪顿节 8月 7天
蒙古族 那达慕 7月 5天
傣族 泼水节 4月 3天
彝族 火把节 6月 3天
说明:彝族有2个节日(火把节和彝族年),数量最多;按天数排序时,苗年(15天)排第一;雪顿节和彝族年同为7天,按民族名称Unicode码点"彝"(U+5F5D) < "藏"(U+85CF),因此先输出彝族的彝族年再输出藏族的雪顿节;火把节和泼水节同为3天,"傣"(U+50A3) < "彝"(U+5F5D),因此先输出傣族的泼水节再输出彝族的火把节。