Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kita Mengira Modulo Nombor Negatif dengan Betul?
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>
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!