Persediaan Temu Duga Pengaturcaraan · Pelajaran

nCr dengan Faktorial Pra-kiraan

Kira gabungan modulo perdana.

Pelajaran 4 daripada 413 langkah

nCr dengan Faktorial Pra-kiraan ialah pelajaran Persediaan Temu Duga Pengaturcaraan percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga Pengaturcaraan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.

Mengira Kombinasi

Banyak masalah bertanya berapa banyak cara untuk memilih r item daripada n, ditulis sebagai nCr. Pertandingan memerlukan kiraan itu di bawah modulo nombor perdana. 🧮

Formula Faktorial

Formula klasik ialah nCr bersamaan dengan n faktorial dibahagikan dengan hasil darab r faktorial dan n tolak r faktorial. Masalahnya ialah pembahagian di bawah modulo.

# nCr = n! / (r! * (n-r)!)

Faktorial Membesar Drastik

Satu faktorial sahaja boleh membesar secara astronomi, jadi ambil modulo p bagi setiap satunya. Ini memastikan setiap nilai kekal kecil sementara formula tetap tepat di bawah modulo.

Kira Awal Semua Faktorial

Bina tatasusunan fact sekali sehingga n terbesar yang Anda perlukan. Setiap entri ialah entri sebelumnya didarab dengan indeks, dan modulo p diambil sepanjang proses.

fact[i] = fact[i-1] * i % MOD

Pembahagian Memerlukan Invers

Formula itu membahagi dengan dua faktorial, jadi Anda memerlukan invers modulo bagi kedua-duanya. Ingat bahawa invers menukar pembahagian menjadi pendaraban yang mudah.

Cari Invers Faktorial Terbesar

Kira invers bagi faktorial terbesar sekali sahaja menggunakan Fermat, dengan pow dan eksponen p tolak 2. Satu panggilan itu memulakan baki proses.

inv_fact[n] = pow(fact[n], MOD - 2, MOD)

Kira Invers Secara Songsang

Dapatkan invers faktorial yang lain melalui satu laluan songsang, setiap satunya daripada nilai seterusnya didarab dengan indeks. Tiada panggilan pow tambahan diperlukan.

inv_fact[i] = inv_fact[i+1] * (i+1) % MOD

Bentuk nCr

Sekarang nCr hanyalah fact[n] didarab dengan inv_fact[r] dan inv_fact[n tolak r], semuanya modulo p. Tiga carian dan dua pendaraban bagi setiap pertanyaan.

C = fact[n] * inv_fact[r] % MOD * inv_fact[n-r] % MOD

Setiap Pertanyaan Serta-merta

Selepas pengiraan awal, setiap jawapan kombinasi mengambil masa O(1). Itulah sebab corak ini sangat berguna apabila masalah meminta ribuan values nCr.

Tangani Kes Tepi

Jika r negatif atau lebih besar daripada n, jawapannya ialah 0. Periksa had itu dahulu supaya Anda tidak mengakses indeks di luar tatasusunan faktorial.

if r < 0 or r > n: return 0

Sediakan Saiz Tatasusunan yang Mencukupi

Tetapkan saiz tatasusunan kepada n maksimum bagi semua pertanyaan, ditambah sedikit ruang. Had yang terlalu kecil ialah punca biasa ralat indeks di sini.

N = 200005

Semakan Pantas

Selepas pengiraan awal, berapa pantaskah satu pertanyaan nCr?

Rumusan

Anda mengira awal faktorial dan inversnya sekali, kemudian menjawab setiap nCr dalam O(1) dengan tiga carian. Pastikan had r diperiksa dan tatasusunan cukup besar. 🏆

Percuma untuk bermula

Pelajari Persediaan Temu Duga Pengaturcaraan dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
90
Pelajaran
360

Soalan Lazim

Adakah pelajaran “nCr dengan Faktorial Pra-kiraan” percuma?

Ya — teks penuh “nCr dengan Faktorial Pra-kiraan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga Pengaturcaraan, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “nCr dengan Faktorial Pra-kiraan”?

Kira gabungan modulo perdana. Anda berlatih Persediaan Temu Duga Pengaturcaraan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga Pengaturcaraan?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga Pengaturcaraan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “nCr dengan Faktorial Pra-kiraan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga Pengaturcaraan ini?

Ya. Setiap pelajaran Persediaan Temu Duga Pengaturcaraan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Bekerja Modulo Perdana
  2. Pengeksponenan Modular Pantas
  3. Invers Modular melalui Fermat
  4. nCr dengan Faktorial Pra-kiraan
← Kembali ke Persediaan Temu Duga Pengaturcaraan