-19 - (-19 / -5) * -5 = -19 - 3 * -5 = -19 + 15 = -4
Я же давал ссылку на wiki c таблицей операций взятия остатка.
Если округление к 0 (С++), знак остатка совпадает со знаком числителя и не зависит от знака знаменателя.
Если округление к -∞ (Python), знак остатка совпадает со знаком знаменателя и не зависит от знака числителя.
Это не "неправильный остаток". Это такая операция целочисленного деления.
Python: -19 % -5 = -4
-19 % 5 = 1
19 % -5 = -1
19 % 5 = 4 С++: -19 % -5 = -4
-19 % 5 = -4
19 % -5 = 4
19 % 5 = 4 В любом языке: (-a) % (-b) = -(a % b)