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

Số Super Ugly trong JavaScript

Số Super Ugly

Super ugly numbers là các số dương mà tất cả thừa số nguyên tố của chúng nằm trong danh sách cho trước primes kích thước k. Ví dụ, [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32] là 12 super ugly numbers đầu tiên với primes = [2, 7, 13, 19].

Mô tả vấn đề

Chúng ta cần viết hàm JavaScript nhận vào số num làm đối số đầu tiên và mảng arr số nguyên tố làm đối số thứ hai. Hàm tìm và trả về số super ugly thứ num.

Ví dụ minh họa

Mã thực hiện (đa con trỏ, tương tự ugly number II):

const num = 7; 
const arr = [2, 7, 14, 19]; 
const superUgly = (num = 1, arr = []) => { 
  arr.sort((a, b) => a - b); 
  const ptr = []; 
  const res = []; 
  for(let i = 0; i < arr.length; i++){ 
    ptr[i] = 0; 
  }; 
  res.push(1); 
  for(let i = 1; i < num; i++){ 
    let mn = Math.pow(2, 32) - 1; 
    for(let j = 0; j < arr.length; j++){ 
      mn = Math.min(mn, arr[j] * res[ptr[j]]); 
    }; 
    res[i] = mn; 
    for(let j = 0; j < arr.length; j++){ 
      if(mn % arr[j] === 0){ 
        ptr[j]++; 
      }; 
    }; 
  }; 
  return res[num-1]; 
}; 
console.log(superUgly(num, arr));

Đầu ra

Kết quả trong console sẽ là:

16