描述
信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。
采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。
数据范围:1 \le I,R \le 100 \1≤I,R≤100 ,输入的整数大小满足 0 \le val \le 2^{31}-1\0≤val≤2
31
−1
输入描述:
一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0~(2^31)-1,序列个数不限
输出描述:
从R依次中取出R<i>,对I进行处理,找到满足条件的I:
I整数对应的数字需要连续包含R<i>对应的数字。比如R<i>为23,I为231,那么I包含了R<i>,条件满足 。
按R<i>从小到大的顺序:
(1)先输出R<i>;
(2)再输出满足条件的I的个数;
(3)然后输出满足条件的I在I序列中的位置索引(从0开始);
(4)最后再输出I。
附加条件:
(1)R<i>需要从小到大排序。相同的R<i>只需要输出索引小的以及满足条件的I,索引大的需要过滤掉
(2)如果没有满足条件的I,对应的R<i>不用输出
(3)最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)
序列I:15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123(第一个15表明后续有15个整数)
序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)
输出:30, 3,6,0,123,3,453,7,3,9,453456,13,453,14,123,6,7,1,456,2,786,4,46,8,665,9,453456,11,456,12,786
说明:
30----后续有30个整数
3----从小到大排序,第一个R<i>为0,但没有满足条件的I,不输出0,而下一个R<i>是3
6--- 存在6个包含3的I
0--- 123所在的原序号为0
123--- 123包含3,满足条件
示例1
输入:
15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
5 6 3 6 3 0
复制
输出:
30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786
复制
说明:
将序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)排序去重后,可得0,3,6。
序列I没有包含0的元素。
序列I中包含3的元素有:I[0]的值为123、I[3]的值为453、I[7]的值为3、I[9]的值为453456、I[13]的值为453、I[14]的值为123。
序列I中包含6的元素有:I[1]的值为456、I[2]的值为786、I[4]的值为46、I[8]的值为665、I[9]的值为453456、I[11]的值为456、I[12]的值为786。
最后按题目要求的格式进行输出即可。
def exam(i,r):
i = istr
r = rstr
# print(i,'\n',r)
# 15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
# 5 6 3 6 3 0
# rindex = r.index
# newr = sorted(set(r[1:]),reverse=True)
# print(newr)
# [' ', '6', '3', '0']
newr = sorted(list(map(int,r.split(' ')[1:])))
# print(r_)
# [4, 16, 26]
# newr = sorted(set(r.split(' ')[1:]),reverse=False)
newr_len = int(r.split(' ')[0])
# 7 6396 4598 8539 6047 2019 11269 7402
# 3 16 4 26
# print(newr,newr_len)
# ['16', '26', '4'] 3 打印了字符串,没法判断大小
# [4, 16, 26] 3
i_index = i.index
newi = i.split(' ')[1:]
newi_len = int(i.split(' ')[0])
# print(newi_len,newi)
# 15,['123', '456', '786', '453', '46', '7', '5', '3', '665', '453456', '745', '456', '786', '453', '123']
temp = []
res = []
cnt = 0
# print(newr)
# [10, 11, 11, 16, 17, 20, 23, 34, 50, 64, 66, 66, 74, 80, 85, 91, 97, 100, 108, 120]
newr_index = newr.index
newr = sorted(set(newr),key = newr_index)
# [10, 11, 16, 17, 20, 23, 34, 50, 64, 66, 74, 80, 85, 91, 97, 100, 108, 120]
# print(newr)
# [10, 11, 16, 17, 20, 23, 34, 50, 64, 66, 74, 80, 85, 91, 97, 100, 108, 120]
for i in newr:
# print('start-value: ',i)
# 5 1197 707 1807 11747 7545
# 20 74 66 17 11 80 23 120 108 11 66 16 100 91 50 64 20 10 97 34 85
# 22 11 2 0 1197 3 11747 17 1 3 11747 74 1 3 11747 80 1 2 1807 97 1 0 1197
if str(i) not in ','.join(newi):
# 3524和4022组合一起后变成 44了。。。
# 4 1877 2491 3524 4022
# 10 66 26 117 69 38 77 44 80 36 83
# 4 77 1 0 1877
# print('notin: ',i)
# notin: 0
continue
if str(i) in ','.join(newi):
for j in range(newi_len):
if str(i) in newi[j]:
cnt += 1
# print('cnt: ',cnt)
value_index = j
temp.append(str(j))
# print('j:',temp)
# j: ['0']
value = newi[j]
temp.append(value)
# print('value: ',temp)
# value: ['0', '123']
res.append(i)
res.append(str(cnt))
res.append(temp)
# print(res)
# ['3', '6', '0,123,3,453,7,3,9,453456,13,453,14,123']
# ['3', '6', '0,123,3,453,7,3,9,453456,13,453,14,123', '6', '7', '1,456,2,786,4,46,8,665,9,453456,11,456,12,786']
cnt = 0
temp = []
# print(res)
# ['3', '6', ['0', '123', '3', '453', '7', '3', '9', '453456', '13', '453', '14', '123'], '6', '7', ['1', '456', '2', '786', '4', '46', '8', '665', '9', '453456', '11', '456', '12', '786']]
# print(len(res))
# 6
newres = []
for i in res:
if '[' not in str(i):
# print(i)
# 3 6 6 7
newres.append(str(i))
if '[' in str(i):
# print(i)
# ['0', '123', '3', '453', '7', '3', '9', '453456', '13', '453', '14', '123']
# ['1', '456', '2', '786', '4', '46', '8', '665', '9', '453456', '11', '456', '12', '786']
for one in i:
newres.append(one)
# print(newres)
# ['3', '6', '0', '123', '3', '453', '7', '3', '9', '453456', '13', '453', '14', '123', '6', '7', '1', '456', '2', '786', '4', '46', '8', '665', '9', '453456', '11', '456', '12', '786']
# print(len(newres))
# 30
len_newres = len(newres)
outres = str(len_newres) + ' ' + ' '.join(newres)
print(outres)
# 30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786
istr = input().strip()
rstr = input().strip()
exam(i=istr,r=rstr)