Computer >> Máy Tính >  >> Lập trình >> Javascript

Tổng chia hết cho n trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và một số, num, làm đối số thứ hai. Hàm của chúng ta sẽ trả về số lượng các mảng con (liền nhau, không rỗng) có tổng chia hết cho num.

Ví dụ:nếu đầu vào của hàm là -

const arr = [4, 5, 0, -2, -3, 1];
const num = 5;

Sau đó, đầu ra phải là -

const output = 7;

Giải thích đầu ra

Có 7 mảng con có tổng chia hết cho 5 -

[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

Ví dụ

Mã cho điều này sẽ là -

const arr = [4, 5, 0, -2, -3, 1];
const num = 5;
const divisibleSum = (arr = [], num = 1) => {
   const map = {};
   let sum = 0;
   for (let i = 0; i < arr.length; i++) {
      sum += arr[i];
      const key = ((sum % num) + num) % num;
      map[key] = map[key]+1||1;
   };
   let s = 0;
   for (let i = 0; i < num; i++) {
      if (map[i] > 1) {
         s += (map[i] * (map[i] - 1)) / 2;
      }
   }
   return s + (map[0]||0);
};
console.log(divisibleSum(arr, num));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

7