Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kita Mengira Modulo Nombor Negatif dengan Betul?

Bagaimanakah Kita Mengira Modulo Nombor Negatif dengan Betul?

Mary-Kate Olsen
Lepaskan: 2025-01-13 13:31:42
asal
286 orang telah melayarinya

How Do We Correctly Calculate the Modulo of Negative Numbers?

Nombor negatif modulo: masalah yang sukar

Untuk nombor positif, mudah untuk mengira baki pembahagian satu integer dengan yang lain. Walau bagaimanapun, pengendali modulo standard (%) boleh membawa kepada keputusan yang tidak dijangka apabila nombor negatif terlibat. Ini kerana pengendali modulo mengembalikan baki selepas pembahagian, dan untuk operan negatif, hasilnya juga negatif.

Untuk mengatasi masalah ini dan menentukan modulus nombor negatif dengan betul, kita perlu menyesuaikan pendekatan kita. Penyelesaian biasa ialah mencipta fungsi modular tersuai untuk memastikan keputusan sentiasa berada dalam julat yang dikehendaki.

Berikut ialah pelaksanaan fungsi modular yang mengendalikan input positif dan negatif dengan tepat:

<code class="language-c++">int mod(int x, int m) {
    int r = x % m;
    return r < 0 ? r + m : r;
}</code>
Salin selepas log masuk

Dalam fungsi ini, kita mula-mula mendapatkan baki bahagian menggunakan operator modulo standard. Jika bakinya negatif, nilai modulo ditambah untuk menukarnya kepada julat positif. Jika tidak, kami mengembalikan baki seperti sedia ada.

Dengan menggunakan fungsi modulo yang diubah suai ini, kita boleh menentukan dengan betul kedudukan indeks dalam tatasusunan, tidak kira sama ada input ialah integer positif atau negatif. Contohnya:

GetArrayIndex(4, 3) == 1 GetArrayIndex(3, 3) == 0 GetArrayIndex(2, 3) == 2 GetArrayIndex(1, 3) == 1 GetArrayIndex(0, 3) == 0 GetArrayIndex(-1, 3) == 2 GetArrayIndex(-2, 3) == 1 GetArrayIndex(-3, 3) == 0 GetArrayIndex(-4, 3) == 2

Dengan pendekatan ini, kita boleh menggelungkan tatasusunan dengan cekap menggunakan indeks yang mengendalikan nombor positif dan negatif dengan betul.

Atas ialah kandungan terperinci Bagaimanakah Kita Mengira Modulo Nombor Negatif dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan