b belajar.myudak

Pangkat Cepat (modular)

Hitung an mod ma^n \bmod m untuk 0≤a≤1090 \le a \le 10^9, 0≤n≤1090 \le n \le 10^9, 1≤m≤1061 \le m \le 10^6.

Mengalikan aa sebanyak nn kali terlalu lambat. Gunakan ide divide and conquer: an=(an/2)2a^n = \left(a^{n/2}\right)^2, sehingga hanya butuh O(log⁡n)O(\log n) perkalian. Ambil mod setelah setiap perkalian agar angkanya tetap kecil (di bawah 101210^{12}, masih aman untuk number JavaScript).

power(2, 10, 1000) → 24      // 1024 mod 1000
Topik
rekursidivide and conquermatematika
Petunjuk 1

Mengalikan a sebanyak n kali butuh O(n), terlalu lambat untuk n = 10⁹.

Petunjuk 2

aⁿ = (a^(n/2))² jika n genap, dan a · aⁿ⁻¹ jika n ganjil. Jangan lupa ambil mod di setiap perkalian.

Pengaturan editor

Ukuran font
Ukuran huruf di editor.
Ukuran tab
Lebar indentasi. Otomatis: 2 spasi untuk TypeScript, 4 untuk Python.
Key bindings
Ganti ke mode Vim.
Nomor baris relatif
Nomor baris dihitung dari posisi kursor (berguna untuk gerakan Vim).
Word wrap
Baris panjang dilipat agar muat di lebar editor.
IntelliSense
Saran kode otomatis saat mengetik (Ctrl+Spasi tetap bisa dipakai saat mati).

Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.