信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。
信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。
一组输入整数序列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,满足条件
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。 最后按题目要求的格式进行输出即可。
while True:#别的大佬的都比较短=、= try: b=[] final="" I=input().split()#I 以空格区分 R=input().split()#R以空格区分 In = I[0]#记录I个数 del I[0]#记录完删除 Rn=R[0]#记录R个数 del R[0] R = list(map(int,R))#转为int R = set(R)#去除重复 R = list(R) R.sort()#排序从小到大 R = list(map(str,R))#转为string for i in range (len(R)):#遍历每一个R[i] found = False a=[]#每一个R【i】查找完重置,也可以放在一个里面继续往后无区别,看着舒服。 str1="" for ii in range (len(I)):#R[i]查找是否在每一个I【ii】里 if R[i] in I[ii]: found = True#确认有找到 str2 = str(ii)+ " "+I[ii]#位置+“ ”+数据的格式添加 a.append(str2) if found == True: a.insert(0, str(len(a)))#前端添加长度,也就是找到几个 a.insert(0,str(R[i]))#前端添加R[i] str1 = ' '.join(a) b.append(str1)#转存到b里,可以不用这个为了测试看的舒服 final = ' '.join(b)#合并b count = final.split()#以空格区分看看一共有多少个元素 num = len(count) final = str(num) + " " + final#打印总元素个数和后续结果 print(final) except: break
a=input().split()[1:] b=map(int,input().split()[1:]) b=sorted(set(b)) res=[] for i in b: count =0 x=[] for j in range(0,len(a)): if str(i) in a[j]: count +=1 x.append(str(j)) x.append(a[j]) if count!=0: res.append(str(i)) res.append(str(count)) res.extend(x) res.insert(0, str(len(res))) print(' '.join(res))
def func(tmp_I,tmp_R): N_I,list_I = int(tmp_I[0]) , tmp_I[1:] N_R , list_R = int(tmp_R[0]) , sorted(set(tmp_R[1:])) out_put_list = [] for r in list_R: # 判断 r 是否满足条件; tmp = [(j,list_I[j]) for j in range(N_I) if r in list_I[j] ] n_tmp = len(tmp) if n_tmp > 0 : # 条件满足; # 先输出r; out_put_list.append(str(r)) # 再输出满足条件的i的个数n_tmp; out_put_list.append(str(n_tmp)) # 再输出满足条件的i在I序列中的位置索引;以及i; for index,i in tmp : out_put_list.append(str(index)) out_put_list.append(str(i)) # 最后统计输出的总长度,并格式化输出; out_put_list = [str(len(out_put_list))] + out_put_list out_put = ' '.join(out_put_list) return out_put while 1: try: # 获取输入;按要求整理; tmp_I = input().split() #15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123 tmp_R = input().split() #5 6 3 6 3 0 out_put = func(tmp_I,tmp_R) print(out_put) except: break
while True: try: li, lr = input().split(), list(map(int, input().split())) lr.pop(0) li.pop(0) lr = list(map(str, sorted(list(set(lr))))) output = [] for n in lr: temp = [(j, li[j]) for j in range(len(li)) if n in li[j]] if temp: output.extend([n, str(len(temp))]) for i, v in temp: output.extend([str(i), v]) print(str(len(output)) + " " + " ".join(output)) except: break
while True: try: I = input().strip().split(' ')[1:] R = input().strip().split(' ')[1:] # R=['6','3','6','3','0'] # 此处排序一定要注意是将字符对应的整型数排序,而不是单纯靠字符排序, # 避免出现'4'比'26'大的情况 R = sorted(set(R), key=int) # R = ['0','3','6'] rm = [] # R列表中应该移除的值 for R_i in R: flag = 0 # 对于R中的某个元素R_i,假设列表I中的每个元素都不包含R_i for I_i in I: if R_i in I_i: flag = 1 if flag == 0: # 说明R_i应该从R中移除 rm.append(R_i) for rm_i in rm: R.remove(rm_i) # 至此,列表R已经处理完毕,可以开始与I的匹配运算,R = ['3','6'] L = [] for R_i in R: L.append(R_i) count = 0 index_value = [] # 此处一定不能直接迭代I中的元素,即for I_i in I,因为循环 # 内部需要使用到列表元素的角标,若元素ele出现多次,靠方法 # L.index(ele)只能返回ele第一次出现时的角标,而不是ele在 # 列表L中的实际角标位置。 for index in range(len(I)): if R_i in I[index]: count += 1 index_value.extend([str(index), I[index]]) L.append(str(count)) L.extend(index_value) # 至此,3和6的相关输出已经全部在列表L中 L_len = str(len(L)) L.insert(0, L_len) print(' '.join(L)) except: break
def info_make(): i_info = input().split()[1:] r_temp = list(set(map(int, input().split()[1:]))) r_temp.sort() r_info = [str(x) for x in r_temp] result = [] for guize in r_info: temp = [] for index, i in enumerate(i_info): if guize in i: temp.append(index) temp.append(i) if len(temp) != 0: result.append(guize) result.append(len(temp) // 2) result.extend(temp) print(len(result), *result) if __name__ == '__main__': while True: try: info_make() except EOFError: break
while True: try: I = input().split()[1:] R = map(int, input().split()[1:]) R = map(str, sorted(set(R))) out = [0] for r in R: message = [0] for index, value in enumerate(I): if r in value: message.extend([index, int(value)]) message[0] += 1 if message[0] != 0: out.append(int(r)) out.extend(message) out[0] = len(out) - 1 print(' '.join(map(str, out))) except: break
def find(Rx, I): Rx = str(Rx) count = 0 resLst = [] for i in range(len(I)): # 遍历I中元素 if Rx in I[i]: count += 1 resLst.append(i) # 满足条件的I<j>在I序列中的位置索引 resLst.append(I[i]) # 满足条件的I<j>的元素 if count != 0: return Rx, count, resLst else: return '', '', '' while True: try: II = input().split() lenI = int(II[0]) # 序列I的长度 I = II[1:] # 序列I的元素,元素为字符串形式 RR = list(map(int, input().split())) lenR = RR[0] R = sorted(set(RR[1:]), reverse=False) # 去重,排序 # 从R依次中取出R<i>,对I进行处理,找到满足条件的I<j> resRi = [] # 满足条件的R<i> resCount = [] # 满足条件的I<j>的个数 resIndexContent = [] # 满足条件的I<j>在I序列中的位置索引(从0开始) 与 满足条件的I<j>的元素 num = 0 for Rx in R: rx, count, resLst = find(Rx, I) if rx: # 如果rx非空 resRi.append(rx) resCount.append(count) resIndexContent.append(resLst) num += (1 + 1 + len(resLst)) RES = str(num) for i in range(len(resRi)): RES = RES + ' ' + str(resRi[i]) + ' ' + str(resCount[i]) + ' ' + (' '.join(str(ii) for ii in resIndexContent[i])) print(RES) except: break
while True: try: i_str = input() r_str = input() i_len, i_list = int(i_str.split()[0]), i_str.split()[1:] r_len, r_nums = int(r_str.split()[0]), list(map(int, r_str.split()[1:])) r_nums = sorted(set(r_nums)) r_dict = {} ans_sum = 0 ans_strings = [] for r_num in r_nums: for i in range(i_len): if str(r_num) in i_list[i]: if str(r_num) not in r_dict.keys(): r_dict[str(r_num)] = [(str(i), i_list[i])] else: r_dict[str(r_num)].append((str(i), i_list[i])) if str(r_num) in r_dict.keys(): ans_sum += 2 + len(r_dict[str(r_num)])*2 ans_strings.append(str(r_num)) ans_strings.append(str(len(r_dict[str(r_num)]))) for (index, num) in r_dict[str(r_num)]: ans_strings.append(index) ans_strings.append(num) ans= str(ans_sum) + ' ' + ' '.join(ans_strings) print(ans) except: break
while True: try: list1 = [x for x in input().split(' ')] list2 = [int(y) for y in input().split(' ')] num1 = int(list1[0]) num2 = list2[0] dict1 = {} # 对序列R:降重——排序 l = sorted(set(list2[1:])) # 找到符合条件的I[],并建立字典 for i in range(len(l)): list3 = [] for j in range(1,num1+1): if str(l[i]) in list1[j]: list3.append(str(j-1) + ' ' + list1[j]) dict1[str(l[i])] = list3 else: continue s = '' for i in dict1: s = s + i + ' ' + str(len(dict1[i])) + ' ' for j in dict1[i]: s += j + ' ' num = len([x for x in s.split(' ')]) - 1 print(str(num) + ' ',end='') print(s[:-1]) except: break
def parseIR(I, R): res = [] for rule in R: if not rule.isdigit(): continue cnt = 0 numIndex = [] for index in range(len(I)): if rule in I[index]: cnt += 1 numIndex.append([index, I[index]]) if cnt>0: res.append([rule, cnt, numIndex]) return res def printRes(res): if len(res)==0: print() cnt = len(res)*2 for row in res: cnt += len(row[2])*2 rows = str(cnt)+' ' for row in res: rowStr = '{} {} '.format(row[0], row[1]) for pair in row[2]: rowStr += '{} {} '.format(pair[0], pair[1]) rows += rowStr print(rows[:-1]) while True: try: i = input() if i: I = i.split(" ")[1:] r = input() R = r.split(" ")[1:] R = list(set(R)) R = [int(x) for x in R if x.isdigit()] R.sort() R = [str(x) for x in R] res = parseIR(I, R) printRes(res) else: break except: break
while True: try: I=list(input().split(' ')) R=list(map(int,input().split(' '))) Rs=list(set(R[1:])) I=I[1:] Rs.sort() Rs=[str(i) for i in Rs] string=[] for i in range(len(Rs)): temp=[];count=0 for j in range(len(I)): if Rs[i] in I[j]: temp.append(j) temp.append(I[j]) count=count+1 if count!=0: string.append(Rs[i]) string.append(count) string=string+temp num=[len(string)] num=num+string out=' '.join(map(str,num)) print(out) except: break求大神们帮忙看一下,样例能通过,但是保存调试的时候不通过,提示“空.请检查一下你的代码,有没有循环输入处理多个case”,但是我用了 while True: try: except:break 模块呀,并且我把不通过的样例单独调试是可以通过的,问题出在哪里啊?