2021测试2¶
题目1 数组元素的插入删除¶
Description¶
数组的内存分配是连续的,读取或者修改某个元素可以通过下标高效实现,但删除元素或者插入元素往往会花费较大时间。 插入元素要把后续元素依次后移,删除元素要把后续元素依次前移,请编写程序实现数组的元素插入和删除。 操作有两种: 0 index value:array[index]位置插入value 1 index:删除array[index] 操作不一定合法:插入操作,index在[0,len]的范围都是合法的。删除操作,index在[0,len-1]都是合法的。len表示当前的数组长度。 例如对于[1,2,3]执行1 3操作,显然不存在index为3的元素,操作失败。 再例如对于[1,2,3]执行0 4 3,显然index为4的位置是和前面的位置不连续的,操作失败。 对于失败的操作,不需要更改数组,但是需要记录失败的次数。
Input¶
第一行是一个整数n,表示初始数组的长度(0<=n<=500) 第二行是n个整数,为初始数组 第三行是一个整数m,表示操作次数(1<m<1000) 下面是m行,每行为上述操作之一 (所有数均在int范围内)
Output¶
第一行输出操作后的数组,用空格间隔,最后一个数后面不要有多余空格 第二行输出'error times:x',x为操作失败的次数(输出不含引号)
Sample Input 1¶
3 1 2 3 3 0 1 4 1 3 1 3
Sample Output 1¶
1 4 2 error times:1
Sample Input 2¶
3 1 2 3 1 0 0 5
Sample Output 2¶
5 1 2 3 error times:0
题目2 多进制转换¶
Description¶
在不同的场景下会用到不同进制,现请你用递归实现函数: void turnToBaseN(int n, int x); n表示n进制,x为需要转换的数,其中x为10进制数。 若某一位大于等于10请使用大写字母A,B,C,……,到 Z 代替。
Input¶
一行两个整数,n和x,(x在int范围内,1 < n < 30)
Output¶
输出为一行,表示转换后的结果
Sample Input 1¶
16 26
Sample Output 1¶
1A
Sample Input 2¶
16 32
Sample Output 2¶
20
Sample Input 3¶
2 4
Sample Output 3¶
100
题目3 找出幸运数¶
Description¶
如果一个整数含有4,或者能被4,44,444,4444,……整除,则是一个幸运数。 现给出一个范围,请你找出其中的幸运数,统计个数。
Input¶
一行两个整数L R,表示范围(0<=L,R<=50000)
Output¶
一个整数,表示幸运数的个数。
Sample Input 1¶
1 10
Sample Output 1¶
2
Sample Input 2¶
10 20
Sample Output 2¶
4
题目4 性价比买西瓜¶
Description¶
每个西瓜有三个属性,分别是编号,价格和重量,请使用结构体存储每个西瓜(若未使用结构,即使通过也被视为错误) 单位质量所花的钱越少即性价比越高,请输出性价比最高的西瓜的编号,若有多个西瓜,则按字典序输出。 由于浮点数有精确度误差,请使用下述比较方法: a-b>1e-4则a大 a-b<-1e-4则a小 |a-b|<=1e-4则a==b
Input¶
第一行一个整数n表示西瓜个数(0<n<100) 接下来有n行,每一行为三个数id price weight,其中id为字符串,price和weight为double类型,id长度小于20
Output¶
输出为一行,性价比最高的西瓜id,多个西瓜中间使用空格间隔
Sample Input 1¶
2 A001 10 5 A002 9 4
Sample Output 1¶
A001
Sample Input 2¶
2 kkjaaarb 10 5 dawdazcx 20 10
Sample Output 2¶
dawdazcx kkjaaarb
题目5 合并字符串¶
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 数据输入的第二行结尾没有换行
题目6 计算字符种类¶
Description¶
给定多个字符串,找出其中拥有最多种类字符的字符串 比如"aaassd"中出现了3种字符,分别是'a','s','d' (简单起见,字符只包括a-z,如果有多个字符串字符种类数量相同,只输出最先读入的那个字符串)
Input¶
第一行为一个整数n,接下来有n行字符串
Output¶
打印字符种类最多的字符串
Sample Input 1¶
3 asd bqwert cccccccc
Sample Output 1¶
bqwert
题目7 波浪线¶
Description¶
如果一串数字按大小交错排列,看上去就如同波浪线 比如: [1,9,5,7,2,6]就是波浪线; [1,4,5,2,1]就不是波浪线(4比1大,5还是比4大,不满足“交错”的条件) 现在给你若干串数字,请你判断一下它们能否构成波浪线(1表示可以,0表示不行)。 说明: 保证相邻的数字不相同 如果数字串中的数字不到3个,那同样视为波浪线
Input¶
第一行为整数n,表示接下来有n行输入 接下来的每行的第一个为整数k,表示后面还有k个整数(判断这k个整数是否为波浪线),整数之间用空格隔开
Output¶
输出n行,每行为1或0(1表示可以构成,0表示不行)
Sample Input 1¶
4 5 1 2 3 2 1 4 5 9 2 5 3 9 3 6 2 4 6
Sample Output 1¶
0 1 1 1
题目8 计算空隙¶
Description¶
在一个数组A中,如果A[i]=1,表示这个位置被堵住了;如果A[i]=0,表示这个位置是个空隙。 如果空隙相邻,那就构成了更大的空隙:比如[1,0,0,0,1,0]中有个长度为3的大空隙。 请你判断这个数组中最大的空隙有多长。
Input¶
只有一行,只有0,1两种数字,用空格隔开
Output¶
输出最大的空隙的长度
Sample Input 1¶
1 0 0 0 1 0 0 1
Sample Output 1¶
3