2019-360筆試題-兩數相加

題目:

給出兩個在m靜之下含有N位的數字,你可以分別將這兩個數各位上的數字重新排列,然後將兩個數按位對應相加,並分別對m取模,這樣顯然可以得到一個新的m進制之下的N位數(可能存在前導0),但是這個結果是不唯一的,問題來了,按照這樣的操作能夠得到的最大的m進制下的數字是多少呢?

輸入第一行包含兩個正數n,m,分別表示數字含有n位,和在m進制下

輸入第二行和第三行分別包含n個整數,中間用空格隔開,每個整數都在零到m-1之間,每行第i個數表示的是當前數第i位上的數字

輸出包含n個數字中間用空格隔開,表示得到的最大的數字,從高位到低位輸出,如6在二進制下輸出三位的結果是1 1 0

輸入
    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取模即可

解決方法:

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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章