Một số được gọi là Gapful nếu nó có ít nhất 3 chữ số và chia hết cho số được tạo bằng cách ghép chữ số đầu và chữ số cuối. Số nhỏ nhất thỏa mãn là 100 (chữ số đầu 1, cuối 0 → 10, và 100 chia hết cho 10).
Yêu cầu: tạo hàm nhận một số n và trả về số Gapful gần nhất (bao gồm chính nó). Nếu có 2 số Gapful cách đều nhau, trả về số nhỏ hơn.
Ví dụ:
gapful(25) ➞ 100 gapful(100) ➞ 100 gapful(103) ➞ 105
Ví dụ
Mã thực hiện:
const num = 4780;
const isGapful = n => {
if (n < 100) return false;
const temp = Array.from(n.toString());
return n % (temp[0] + temp[temp.length - 1]) === 0;
};
function getClosestGapful(n) {
let left = n, right = n;
while (!isGapful(right)) right++;
if (n < 100) return right;
while (!isGapful(left)) left++;
return n - left <= right - n ? left : right;
}
console.log(getClosestGapful(25));
console.log(getClosestGapful(num));
Kết quả
Kết quả in ra console:
100 4800