Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Đếm số N chữ số có tổng chữ số vị trí chẵn/lẻ chia hết cho các số cho trước - JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào ba số A, B và N, sau đó tìm tổng số lượng các số N chữ số mà tổng các chữ số ở vị trí chẵn và vị trí lẻ lần lượt chia hết cho A và B.

Ví dụ

Dưới đây là mã triển khai cho hàm này:

const indexSum = (num, sumOdd = 0, sumEven = 0, index = 0) => {
  if (num) {
    if (index % 2 === 0) {
      sumEven += num % 10;
    } else {
      sumOdd += num % 10;
    }
    return indexSum(Math.floor(num / 10), sumOdd, sumEven, ++index);
  }
  return { sumOdd, sumEven };
};

const divides = (b, a) => a % b === 0;

const countNum = (n, first, second) => {
  let start = Math.pow(10, (n - 1));
  const end = Math.pow(10, n) - 1;
  const res = [];
  while (start <= end) {
    const { sumEven, sumOdd } = indexSum(start);
    const condition = divides(first, sumEven) && divides(second, sumOdd);
    if (condition) {
      res.push(start);
    }
    start++;
  }
  return res;
};

console.log(countNum(2, 5, 3));

Kết quả

Đoạn mã trên sẽ in ra mảng các số 2 chữ số thỏa mãn điều kiện:

[ 30, 35, 60, 65, 90, 95 ]

Giải thích: Với N=2, A=5 (tổng vị trí chẵn), B=3 (tổng vị trí lẻ). Các số từ 10 đến 99 được kiểm tra. Ví dụ số 30: vị trí 0 (chẵn) là 0, vị trí 1 (lẻ) là 3. Tổng chẵn = 0 chia hết cho 5, tổng lẻ = 3 chia hết cho 3 → thỏa mãn.