İçeriğe atla
ΣDSA Patterns
Menü
Dil

Matematik & Sayı Teorisi

Rehber 2 / 6 · Yol 2 / 6

Etkileşimli

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 6
25!

count 5s, not 25!

n! sondaki sıfırları 10 = 2×5 çarpanlarıdır. Beşler ikilerden daha seyrek.

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Factorial Trailing Zeroes

Problem (yeniden ifade)

Tamsayı n verildiğinde n!’in kaç sondan sıfır içerdiğini döndür. Faktoriyeli hesaplama.

Sezgi

Sondan sıfır, 10 = 2 × 5 çarpanıdır. n!’de 2’ler her zaman 5’lerden fazladır, cevap 5 sayısıdır. 25 katları ekstra bir 5, 125 bir tane daha: ⌊n/5⌋ + ⌊n/25⌋ + ⌊n/125⌋ + ….

Yaklaşımlar

5 çarpanlarını say

Doğrulanmadı
Zaman O(log n)Alan O(1)

Fikir. n = ⌊n/5⌋ tekrarla ve n’i toplama ekle, n 0 olana dek.

Yürüyüş. n = 25 → 5 + 1 = 6. n = 3 → 0. n = 10 → 2.

Trade-off. n!’i hesaplamak hemen taşar. Bu O(log₅ n) toplama. 25, 125, … ekstra 5’lerini unutma.

Çözüm
export function trailingZeroes(n: number): number {
  let z = 0;
  while (n > 0) {
    n = Math.floor(n / 5);
    z += n;
  }
  return z;
}
export function trailingZeroes(n: number): number {
  let z = 0;
  while (n > 0) {
    n = Math.floor(n / 5);
    z += n;
  }
  return z;
}

Şablon bağlantısı

Math & Number Theory’nin faktöriyel / bölünebilirlik şekli: çarpımı açmak yerine asal çarpan say.

Yansıma