Подтвердить что ты не робот

Как сделать мода отрицательного числа положительным?

В принципе, мне нужно (-3) % 5 быть "2" вместо "-3". Python производит "2" , но С++ создает "-3". Не знаете, как создать "2" на С++. Спасибо!

4b9b3361

Ответ 1

((x % 5) + 5) % 5, но я уверен, что есть более элегантный способ.

Ответ 2

Добавьте базу, если входной номер X отрицательный:

X % Y + (X % Y < 0 ? Y : 0);

Ответ 3

Вы можете добавить несколько кратных 5 к отрицательному числу сначала, чтобы преобразовать его в положительное число с тем же значением mod 5.

Вы можете сделать это, взяв абсолютное отрицательное число, добавив все необходимое для округления до следующего кратного 5, а затем добавьте его к своему отрицательному числу, и это должно быть уже число от 0 до 4.

В качестве альтернативы просто выполните что-то вроде:

num = -2;
mod = 5;
if ( num < 0 ) {
    result = mod - (abs(num) % mod);
}

и он будет работать (объяснение: математический)