nCr dengan Faktorial Pra-kiraan
Kira gabungan modulo perdana.
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 % MODPembahagian 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) % MODBentuk 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] % MODSetiap 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 0Sediakan 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 = 200005Semakan 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. 🏆
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
- Bekerja Modulo Perdana
- Pengeksponenan Modular Pantas
- Invers Modular melalui Fermat
- nCr dengan Faktorial Pra-kiraan