跳转至

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