信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 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。 最后按题目要求的格式进行输出即可。
let I=readline().split(" ").map(Number) let ni=I.slice(0,1) I=I.slice(1) let R=readline().split(" ").map(Number) let nr=I.slice(0,1) R=R.slice(1).sort((a,b)=>a-b) R=Array.from(new Set(R)) let res=[] for(let i=0;i<R.length;i++){ let r=R[i] let temp=[] for(let j=0;j<I.length;j++){ if(I[j].toString().includes(r)){ temp.push(j) temp.push(I[j]) } } if(temp.length>0){ res.push(r) res.push(temp.length/2) res=res.concat([...temp]) } } res.unshift(res.length) console.log(res.join(" "))
const line1 = readline().split(' ') //获取第一行输入的值并转为数组 const line2 = readline().split(' ') //获取第二行输入的值并转为数组 line1.shift() //分别去除第一个和第二个数组第一项 line2.shift() const IArr = [...line1] //处理生成要对比的数组 const RArr = [...new Set(line2)].sort((a,b)=>a-b) //去重并排序 let res = [] //存储结果的数组 RArr.forEach(item=>{ //遍历数组I和R,查找数组I中的某项字符串是否包含数组R中的某项字符串 let flag = false //标志是否查到,查不到则不输出0 let hasArr = [] //存储从I中查找到的索引和值 let hasArrLen = 0 //存储查找到的数据数量 IArr.forEach((item1,index1)=>{ if( item1.indexOf(item) !== -1){ flag = true hasArrLen++ hasArr.push(index1,item1) } }) if(flag){ res.push(item,hasArrLen,...hasArr) } }) console.log(res.length,...res)
let line = readline() let arr = line.split(' ') IN = arr.shift() I = arr let line2 = readline() let arr2 = line2.split(' ') RN = arr2.shift(); var stat = {} new Set(arr2).forEach(RI=>{ if(isNaN(stat[RI])) stat[RI] = []; I.forEach(function(v, k){ if(v.indexOf(RI) != -1){ stat[RI].push([k, v]) } }) }) var outN = 0 var out = []; for(var RI in stat){ if(stat[RI].length>0){ outN += 2 outN += 2 * stat[RI].length out.push(RI, stat[RI].length) stat[RI].forEach(v=>{ out.push(v[0], v[1]); }) } } out.unshift(outN) console.log(out.join(' '))
const IArr = readline().split(' ').slice(1) let RArr = readline().split(' ').slice(1) let NewRArr = Array.from(new Set(RArr)).sort((a,b)=>Number(a)-Number(b)) //R序列去重并按从小到大的顺序排列 let NewIArr = [] //存放满足条件的I NewRArr.forEach(R=>{//遍历去重后的R序列 let forArr = [R] //用于存放该次循环满足条件的I let num = 0 //声明有多少个I满足条件 IArr.forEach((I,index)=>{ if(I.indexOf(R)!==-1){//在I序列中的某个数满足条件(I包含了R) forArr.push(index.toString()) //push满足条件的下标 forArr.push(I) //push满足条件的I num ++ //每有一个满足的I(num就加1) } }) if(num!=0){ //当满足的数大于0时 forArr.splice(1,0,num.toString())//将num插入到下标为1的位置(代表满足的I的个数) NewIArr = NewIArr.concat(forArr)//将每次循环生成的数组合并到最终结果数组内 } }) console.log(`${NewIArr.length} ${NewIArr.join(' ')}`)
let line; while(line = readline()){ line = line.split(' ').slice(1) var R = readline().split(' ').slice(1).sort((a,b)=>{return a - b}); var result = []; let cf = ''; R.forEach(item=>{ if(cf == item){ return; } cf = item; var temp = []; line.forEach((str,index)=>{ if(str.indexOf(item) != -1){ temp.push(index,str); } }) if(temp.length>0){ temp.unshift(item,temp.length/2); } result = result.concat(temp); }) length = result.length; result.unshift(length); console.log(result.join(' ')); }