跳转至

2023测试2

题目1 特别的素数

Description

素数又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。可莉喜欢特别的素数,特别的素数是指一个素数它的每一位数字之和也是一个素数,但是可莉不会编程。可莉想请你帮她计算出从n到m范围内所有的特别的素数之和。

Input

输入一行两个由空格分隔的整数n,m。(1<=n<=m<=1000)

Output

输出一个整数,即从n到m范围内所有的特别的素数之和。

Sample Input 1

1 30

Sample Output 1

80

样例解释:[1,30]内特别的素数如下,2是素数3是素数5是素数7是素数

11是素数,1+1也是素数;23是素数,2+3也是素数;29是素数,2+9也是素数

加起来等于80

题目2 字典序最小字符串(指针)

Description

输入两个包含空格的字符串a和b,输出拼接后字典序最小字符串。(要求使用指针完成,否则不得分)字符串a和b拼接:要么a拼接到b后面,要么b拼接到a后面。

Input

第一行一个字符串a。(1<=len(a)<=100000)

第二行一个字符串b。(1<=len(b)<=100000)

Output

输出一行a和b拼接后字典序最小字符串。

Sample Input 1

HaHa

HeiHei

Sample Output 1

HaHaHeiHei

Hint

例如:字符串a=abc字符串b=abb

拼接后字典序最小字符串:abbabc

a的字典序大于b,所以将a拼接到b的后面是拼接后字典序最小字符串。

题目3 卷积核

Description

卷积核(Convolutional Kernel)操作是计算机视觉和图像处理中常用的一种操作,用于提取图像中的特征。下面是对卷积核操作的详细介绍:

卷积核:卷积核是一个小的矩阵,它包含了一组权重参数。通常,卷积核的大小是正方形的,比如3x3、5x5等。卷积核的参数可以通过训练来学习,也可以手动定义。

卷积操作:卷积操作是将卷积核应用于输入图像的过程。具体来说,将卷积核的每个元素与输入图像的对应位置进行相乘,然后将所有乘积结果相加,得到输出图像中对应位置的像素值。

步幅(Stride):步幅是指卷积核在输入图像上滑动的步长。步幅越大,输出图像的尺寸就越小;步幅越小,输出图像的尺寸就越大。常见的步幅为1,表示卷积核每次滑动一个像素。

==========================================================================================================================================================

如下图所示是一个 3*3 的卷积核在 5*5 的输入矩阵上面运算的过程,卷积核会与输入矩阵对应位置的值相乘并求和(下图加法说明了这个过程)。

image-20260425184613512

下图是一个 3*3 的卷积核在 4*4 的矩阵上移动的过程,步幅为1。绿色矩阵就是输出矩阵。

image-20260425184632311

今天你将实现一个卷积操作!简单来说,本题给出两个矩阵,一个大小为n*n的输入矩阵,一个大小为m*m的矩阵(卷积核),将卷积核在输入矩阵上按照上面动图的方式移动,每次计算出卷积核和输入矩阵对应位置数字乘积之和,填入输出矩阵的对应位置,最后给出输出矩阵的大小和值。

Input

第1行两个由空格分隔的整数,分别是n,m(1<=m<=n<=50) 接下来n行,每行n个由空格分隔的整数x[i][j](1<=x[i][j]<=50),表示输入矩阵第i行第j列位置的数值。 接下来m行,每行m个由空格分隔的整数y[i][j](1<=y[i][j]<=50),表示卷积核第i行第j列位置的数值。

Output

输出第一行,由空格分隔的两个整数p,q,表示输出矩阵的是一个p行q列的矩阵。 接下来的p行,每行q个由空格分隔的整数s[i][j]。表示输出矩阵第i行第j列位置的数值。 注意每行末尾无空格!注意每行末尾无空格!注意每行末尾无空格!

Sample Input 1

3 2 1 2 3 4 5 6 7 8 9 0 1 2 3

Sample Output 1

2 2 25 31 43 49

Hint

样例解释:3*3的输入矩阵与2*2的卷积核进行操作,得到输出矩阵大小为2*2,具体计算步骤如下:初始时,卷积核第1行第1个元素将与输入矩阵第1行第1个元素对齐,计算乘积和:1*0+2*1+4*2+5*3=25第二步,卷积核向右移一步,卷积核第1行第1个元素将与输入矩阵第1行第2个元素对齐,计算乘积和:2*0+3*1+5*2+6*3=31第三步,卷积核移动到下一行的开始,卷积核第1行第1个元素将与输入矩阵第2行第1个元素对齐,计算乘积和:4*0+5*1+7*2+8*3=43 第四步,卷积核向右移一步,卷积核第1行第1个元素将与输入矩阵第2行第2个元素对齐,计算乘积和:5*0+6*1+8*2+9*3=49

题目4 合并字符串

Description

给定两个字符串,轮流从中取出一个字符,拼接起来,最终合并为一个字符串。 比如str1=“qwe”,str2="asd",先从str1中取出‘q’,再从str2中取出'a',再从str1中取出'w',...最终得到"qawsed" 当然,如果其中一个字符串已经遍历完了,就直接把另一个字符串的剩余部分全部接上:比如str1=“qt”,str2="asdkk",先从str1中取出‘q’,再从str2中取出'a',再从str1中取出't',再从str2中取出's',这时str1已经取完了,就把str2剩余字符接上,最终得到"qatsdkk"

Input

输入有2行,分别表示要合并的两个字符串,从第一行的第一个字符开始轮流合并

Output

输出一行,表示合并后的字符串

Sample Input 1

abc def

Sample Output 1

adbecf

Sample Input 2

aspp d

Sample Output 2

adspp

Hint

数据输入的第二行结尾没有换行

题目5 植物大战僵尸(递归)

Description

僵尸入侵了你的后院!为了抵御僵尸的入侵,坚果老师需要从n个身高不同的植物中挑选出k个按从矮到高的顺序排成队列守护后院,为了达到最好的效果,老师想把所有可能的布阵方案都试一遍。现在坚果老师把这个任务交给了你,给你植物们的身高数据heights,请你帮他找出所有可能的排队方案。例如n = 5, k = 3,heights = [165, 168, 173, 180, 185],所有可能的排队方案为: 165 168 173 165 168 180 165 168 185 165 173 180 165 173 185 165 180 185 168 173 180 168 173 185 168 180 185 173 180 185 注意每行末尾无空格!注意每行末尾无空格!注意每行末尾无空格!

Input

第一行两个自然数n表示植物总数,k表示队列人数 (1 < n < 21, 1 <= k <= n)。 第二行n个自然数表示植物的身高。植物身高范围1 <= height <= 300,保证没有相同身高的植物且身高从低到高给出。

Output

所有可能的排队方案,每个方案占一行且身高从矮到高排列,所有排队方案按字典顺序输出。

Sample Input 1

5 3 165 168 173 180 185

Sample Output 1

165 168 173 165 168 180 165 168 185 165 173 180 165 173 185 165 180 185 168 173 180 168 173 185 168 180 185 173 180 185

Hint

字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。 对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是54321。