一、编程题
1、统计指定范围里的数
给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。
时间限制:1000
内存限制:65536
输入
第一行1个整数n、,分别表示序列的长度。
第二行n个正整数,表示序列里的每一个数,每个数小于等于10000000
第三行2个整数L、R,分别表示区间的左端点,区间的右端点。(1 ≤ L ≤ R ≤ 1000000)
输出
输出一个整数,表示序列中大于等于L且小于等于R的数的个数。
样例输入
5
11 8 1 10 16
1 10
样例输出
3
参考答案:
略
解析:【喵呜刷题小喵解析】首先,从输入中读取序列的长度n,然后读取序列S,以及区间[L, R]的左右端点L和R。然后,使用一个计数器count来记录满足条件的数的个数。接着,遍历序列S,对于每个数,如果它大于等于L且小于等于R,就将计数器count加1。最后,输出计数器count的值,即为满足条件的数的个数。这个算法的时间复杂度是O(n),满足题目要求的1000ms的时间限制。内存限制是65536,对于序列长度n小于等于1000000,以及每个数小于等于10000000的情况,这个算法的内存使用也是满足要求的。
2、按照个位数排序
对于给定的正整数序列,按照个位数从小到大排序,个位数相同的按照本身大小从小到大排序。
时间限制:1000
内存限制:65536
输入
第一行1个整数n,表示序列的大小。
第二行n个正整数,表示序列的每个数,每个数不大于100000000。
输出
输出按照题目要求排序后的序列
样例输入
6
17 23 9 13 88 10
样例输出
10 13 23 17 88 9
参考答案:
略
解析:【喵呜刷题小喵解析】这道题目要求我们对给定的正整数序列按照个位数从小到大排序,个位数相同的按照本身大小从小到大排序。我们可以使用Python的内置函数`sort()`来实现排序,通过传入一个`key`参数来指定排序的规则。在这个例子中,我们传入了一个匿名函数作为`key`参数。这个匿名函数接受一个参数`x`,返回一个包含两个元素的元组`(x % 10, x)`。这个元组的第一个元素是`x`的个位数,第二个元素是`x`本身。这样,`sort()`函数就会先按照个位数从小到大排序,如果个位数相同,就按照本身大小从小到大排序。最后,我们使用`map()`函数将排序后的列表转换为字符串列表,然后使用`join()`函数将字符串列表连接成一个字符串,每个数字之间用空格隔开,最后输出这个字符串。
3、过滤多余的空格
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。
时间限制:1000
内存限制:65536
输入
一行,一个字符串(长度不超过200),句子的头和尾都没有空格。
输出
过滤之后的句子。
样例输入
Hello world.This is c language.
样例输出
Hello world.This is c language.
参考答案:
略
解析:【喵呜刷题小喵解析】:本题的输入是一行字符串,需要过滤掉多余的空格,只留下一个空格。首先,我们定义一个字符数组 `str` 来存储输入的字符串,以及两个整型变量 `i` 和 `j` 用于遍历和修改字符串。然后,使用 `fgets` 函数从标准输入读取一行字符串,存储在 `str` 中。接下来,我们使用两个指针 `i` 和 `j` 遍历字符串。如果当前字符是空格,并且前一个字符不是空格,或者当前字符是字符串的第一个字符,那么将空格复制到 `str` 中,并将 `j` 加一。否则,如果当前字符不是空格,那么将当前字符复制到 `str` 中,并将 `j` 加一。最后,我们在 `str` 的末尾添加字符串结束符 `'\0'`,并使用 `printf` 函数输出过滤后的字符串。注意,由于题目要求句子的头和尾都没有空格,因此我们可以直接忽略字符串开头和结尾的空格,只需要在字符串中间过滤多余的空格即可。
4、图像叠加
给出两幅相同大小的黑白图像(用0-1矩阵)表示,0表示白点,1表示黑点,求两幅图像叠加后的图像。
说明:若两幅图像在相同位置上的像素点都是白色,叠加后为白色,否则为黑色。
时间限制:1000
内存限制:65536
输入
第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。
之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
输出
m行,每行n个整数,表示叠加后黑白图像上各像素点的颜色。
样例输入
3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1
样例输出
1 1 1
0 0 1
1 1 1
参考答案:
略
解析:【喵呜刷题小喵解析】本题要求将两幅相同大小的黑白图像叠加,输出叠加后的图像。叠加的规则是:若两幅图像在相同位置上的像素点都是白色,叠加后为白色,否则为黑色。解题思路如下:1. 读取图像的大小(行数和列数)。2. 读取第一幅黑白图像。3. 读取第二幅黑白图像。4. 对每一个像素点进行叠加。若两个像素点都是白色,则叠加后为白色,否则为黑色。5. 输出叠加后的图像。根据上述思路,可以编写相应的 Python 代码实现。注意,题目要求时间限制为 1000ms,内存限制为 65536KB,因此在处理图像时需要注意时间复杂度和空间复杂度的控制。在本题中,由于图像大小不超过 65536,因此可以一次性读入整个图像,并使用二维列表来表示图像。在实现中,首先读取图像的大小,然后读取第一幅黑白图像和第二幅黑白图像,并将它们分别存储在变量 image1 和 image2 中。接着,使用一个二维列表 result 来存储叠加后的图像。对于每一个像素点,如果 image1[i*n+j] + image2[i*n+j] > 1,则说明两个像素点都是白色,叠加后为白色,否则为黑色。最后,将叠加后的图像输出。本题中需要注意的是,在读入图像时,需要将输入字符串按空格分割成整数列表,并且在输出时需要将二维列表转换为字符串列表输出。可以使用 map() 函数来实现这两个转换。
5、出书最多
假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(1 ≤ n ≤ 26)个作者独立或相互合作编著的。假设m本图书编号为整数(1到999),作者的姓名为字母('A'到'Z'),请根据图书作者列表找出参与编著图书最多的作者和他的图书列表。
时间限制:1000
内存限制:65536
输入
第一行为所进图书数量m,其余m行,每行是一本图书的信息,其中第一个整数为图书编号,接着一个空格之后是一个由大写英文字母组成的没有重复字符的字符串,每个字母代表一个作者。输入数据保证仅有一个作者出书最多。
输出
输出有多行: 第一行为出书最多的作者字母; 第二行为作者出书的数量;
其余各行为作者参与编著的图书编号(按输入顺序输出)。
样例输入
11
307 F
895 H
410 GPKCV
567 SPIM
822 YSHDLPM
834 BXPRD
872 LJU
791 BPJWIA
580 AGMVY
619 NAFL
233 PDJWXK
样例输出
P
6
410
567
822
834
791
233
参考答案:
略
解析:【喵呜刷题小喵解析】首先,我们读取输入的图书数量m。然后,我们创建一个字典author_books,用于存储每个作者编写的图书数量。对于输入的每一本图书,我们将其编号和作者列表分割出来。然后,对于作者列表中的每个作者,我们在author_books字典中增加对应的计数。接着,我们使用max函数找到author_books字典中计数最大的作者和对应的图书数量。最后,我们遍历author_books字典,对于每个作者,如果其计数等于最大计数,则输出该作者的图书编号。注意,由于题目保证只有一个作者出书最多,因此我们可以直接输出author_books字典中计数最大的作者,而无需检查是否有多个作者具有最大计数。此外,为了按输入顺序输出作者参与编著的图书编号,我们可以将author_books字典中的作者和对应的图书编号存储为一对,并使用zip函数按照作者顺序输出。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!




