Rumah >pembangunan bahagian belakang >C++ >Cari elemen pertama yang lebih besar daripada atau sama dengan X dalam jumlah awalan nombor N menggunakan pengangkatan binari dalam C++
Dalam masalah ini, kita mendapat array arr[] yang terdiri daripada N nombor dan nilai integer x. Tugas kami ialah mencipta program yang menggunakan penggalak binari untuk mencari elemen pertama dalam jumlah awalan N nombor yang lebih besar daripada atau sama dengan X.
Jumlah awalan 数组元素的强> ialah tatasusunan di mana setiap elemen ialah hasil tambah semua elemen dalam tatasusunan awal sehingga indeks tersebut.
Contoh - tatasusunan[] = {5, 2, 9, 4, 1}
prefixSumArray[] = {5, 7, 16, 20, 21}
Mari kita ambil contoh untuk memahami masalah ini,
Input: arr[] = {5, 2, 9, 4, 1}, X = 19 Output: 3
Di sini kita akan menggunakan konsep Binary Boost untuk menyelesaikan masalah. Promosi binari meningkatkan nilai nombor tertentu dengan kuasa 2 (dilakukan dengan membalikkan bit), antara 0 hingga N.
Kami akan mempertimbangkan konsep yang serupa dengan pokok binari yang dirangsang di mana kami akan mencari nilai awal indeks "P". Ini ditambah dengan membalikkan bit, memastikan bahawa nilainya tidak lebih besar daripada X. Sekarang, kita akan mempertimbangkan daya angkat pada kedudukan ini "P".
Untuk melakukan ini, kita akan mula membalikkan bit nombor, contohnya membalikkan bit ke-i tidak akan menjadikan jumlah lebih besar daripada X. Kini, bergantung pada nilai 'P', kita mempunyai dua kes -
kedudukan sasaran adalah antara 'kedudukan + 2^i' dan 'kedudukan + 2^(i+1)', di mana i-th Mengangkat meningkatkan nilai. Sebagai alternatif, kedudukan sasaran adalah antara "kedudukan" dan "kedudukan + 2^i"
Dengan menggunakan ini, kami akan mempertimbangkan kedudukan indeks
keluaran
rreeeeAtas ialah kandungan terperinci Cari elemen pertama yang lebih besar daripada atau sama dengan X dalam jumlah awalan nombor N menggunakan pengangkatan binari dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!