Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một số n. Hàm sẽ trả về bội số 5 tiếp theo lớn hơn của số đó, được thu được bằng cách nối chuỗi nhị phân ngắn nhất có thể vào cuối biểu diễn nhị phân của số này.
Ví dụ
Dưới đây là mã nguồn:
const generateAll = (num = 1) => {
const res = [];
let max = parseInt("1".repeat(num), 2);
for(let i = 0; i <= max; i++){
res.push(i.toString(2).padStart(num, '0'));
};
return res;
};
const smallestMultiple = (num = 1) => {
const numBinary = num.toString(2);
let i = 1;
while(true){
const perm = generateAll(i);
const required = perm.find(binary => {
return parseInt(numBinary + binary, 2) % 5 === 0;
});
if(required){
return parseInt(numBinary + required, 2);
};
i++;
};
};
console.log(smallestMultiple(8));Kết quả
35