Делимая сумма в парах в nodeJs? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь решить проблему с делимой суммой хакерранка в парах с помощью этого кода, но в результате ему возвращается 0?

div(6,3, [1, 3, 2, 6, 1, 2]);

function div(n, k, ar) {
    var sum = 0;
    ar.forEach( (el, index) => {
        ar.forEach( (elem, indexS) => {
            console.log((index < indexS) && (el + elem % k === 0));
            if((index < indexS) && (el + elem % k === 0)) {           
                sum++;
            }
        })
    })
    console.log(sum);
}

каждый forEach выполняет свою работу (проверил это с помощью console.log), но я все равно получаю 0 в результате ??

любой может помочь, высоко ценится.

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

% имеет более высокий приоритет, поэтому используйте скобки

   Change   el + elem % k to (el + elem) % k
0 голосов
/ 28 августа 2018

Проблема здесь в вашем утверждении if. Проверяя в console.log, условие всегда возвращает false, поэтому сумма ++ никогда не применяется. Я добавил несколько комментариев, надеюсь, это поможет вам!

div(6,3, [1, 3, 2, 6, 1, 2]);

function div(n,k,ar){
  var sum = 0;
  ar.forEach((el, index)=> {
        ar.forEach((elem, indexS)=> {
            console.log((index < indexS) && (el + elem % k === 0)); // this line is always false
            if((index < indexS) && (el + elem % k === 0)){    // meaning this condition is never true       
            sum ++; // will never be called
  
            }
        })
  })

console.log(sum); // returns 0, because value is never incremented
}
0 голосов
/ 28 августа 2018

Проверьте ваш порядок операций на (el + elem),

function div(n,k,ar){
  var sum = 0;
  ar.forEach((ai, ii)=> {
        ar.forEach((aj, jj)=> {
            let isDiv = (ii < jj) && ((ai + aj) % k === 0);
            // console.log('isDiv',isDiv);
            if(isDiv){           
              sum ++;
            }
        })
  })
  return sum;
}
let sum = div(6,3, [1, 3, 2, 6, 1, 2]);
console.log(sum);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...