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.