题目:ui
给出两个在m静之下含有N位的数字,你能够分别将这两个数各位上的数字从新排列,而后将两个数按位对应相加,并分别对m取模,这样显然能够获得一个新的m进制之下的N位数(可能存在前导0),可是这个结果是不惟一的,问题来了,按照这样的操做可以获得的最大的m进制下的数字是多少呢?spa
输入第一行包含两个正数n,m,分别表示数字含有n位,和在m进制下code
输入第二行和第三行分别包含n个整数,中间用空格隔开,每一个整数都在零到m-1之间,每行第i个数表示的是当前数第i位上的数字排序
输出包含n个数字中间用空格隔开,表示获得的最大的数字,从高位到低位输出,如6在二进制下输出三位的结果是1 1 0string
输入
5 5
4 4 1 1 1
4 3 0 1 2
输出4 4 3 3 2
提示
4 4 1 1 1――1 4 1 4 1
4 3 0 1 2――3 0 2 4 1
重排序列不惟一,数位相加后的数字为4 4 3 8 2,对5取模便可
复制代码
解决方案:io
const add = (num1,num2,m)=>{
let res = [];
let tempArr = [];
let tempj = 0;
for(let i=0;i<num1.length;i++) {
for(let j=0;j<num2.length;j++){
let temp = num1[i]+num2[j];
if(temp>=m) {
temp=temp-m;
}
if(!tempArr.length) {
tempArr.push(temp)
}else{
if(tempArr[0]<temp){
tempj = j;
tempArr[0]=temp;
}
}
}
num2.splice(tempj,1);
res.push(tempArr[0])
tempArr.length = 0
tempj=0
}
return +res.sort((a,b)=>b-a).join('')
}
console.log(add([4,4,1,1,1],[4,3,0,1,2],5))
复制代码