>백엔드 개발 >C++ >올바른 배열 인덱싱을 위해 모듈식 산술에서 음수를 처리하는 방법은 무엇입니까?

올바른 배열 인덱싱을 위해 모듈식 산술에서 음수를 처리하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-13 13:27:42772검색

How to Handle Negative Numbers in Modular Arithmetic for Correct Array Indexing?

모듈식 산술 및 음수 인덱스

음수에 대한 표준 모듈로 연산(%)을 배열 인덱싱에 사용할 경우 예상치 못한 결과가 발생할 수 있습니다. 나머지가 음수일 수 있으며 이로 인해 잘못된 인덱스 값이 발생할 수 있습니다. 올바른 양수 배열 인덱스를 보장하려면 수정된 모듈로 함수가 필요합니다.

일반적인 해결 방법은 다음 공식을 사용하는 것입니다.

<code>GetArrayIndex(i, arrayLength) = (i % arrayLength + arrayLength) % arrayLength</code>

이는 입력 i의 부호에 관계없이 [0, arrayLength - 1] 범위 내에서 양수 인덱스를 보장합니다.

맞춤형 모듈로 기능

더 깔끔한 코드를 위해서는 사용자 정의 mod 기능이 도움이 됩니다.

<code class="language-java">public static int mod(int x, int m) {
    return (x % m + m) % m;
}</code>

이 함수는 m을 추가하여 음수 나머지를 처리하여 양수 결과를 보장합니다.

최적화된 Modulo 기능

효율성을 향상하려면(모듈로 연산 감소) 다음 대안을 고려하십시오.

<code class="language-java">public static int mod(int x, int m) {
    int r = x % m;
    return r < 0 ? r + m : r;
}</code>

이 버전은 나머지 r가 음수인지 직접 확인하고 필요한 경우에만 m를 추가합니다.

사용자 정의 mod 함수를 사용하면 예상되는 배열 인덱스 동작을 얻을 수 있습니다.

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

위 내용은 올바른 배열 인덱싱을 위해 모듈식 산술에서 음수를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.