Cari elemen pertama yang lebih besar daripada atau sama dengan X dalam jumlah awalan nombor N menggunakan pengangkatan binari dalam C++

WBOY
Lepaskan: 2023-08-26 22:57:06
ke hadapan
1306 orang telah melayarinya

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
Salin selepas log masuk

Penyelesaian

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

untuk menggambarkan cara penyelesaian kami berfungsi

.rree

keluaran

rreeee

Atas 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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!