題目: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))
複製代碼