Относно промените в условието на задача 8, ако приемаме остатъка за неотрицателно число, следва че -1 по модул 3 има остатък 1. Тогава не трябва ли последният пример да има вида: 12 33 0 -1 11 8?
-1 по модул 3 е 2
-1 % 3 не е ли равно на -1? Но, тъй като взимаме положителната стойност на остатъка, фактически 1?
Проверете в wikipedia какво представлява операцията mod, защото в c++, % не отговаря точно на нея. Да вземем положителните стойности на остатъците не означава да ги умножим по -1. Последния пример, както е показал колегата по - горе, показва че -1 е към групата на числата с остатък 2. Аз поне така разбирам условието.
Потвърждавам обяснението на Даниел.
Според общоприетата дефиниция за остатък, остатъкът от делението на две цели числа a и d е единственото цяло неотрицателно число 0 ≤ r < |d|, за което съществува цяло число q (частно), така че a = q.d + r. В случая d = 3, a = -1, q = -1 => r = 2.
За съжаление, операцията % в C++ не отговаря точно на тази дефиниция. Подробно изследване на вариантите за дефиниране на частно и остатък, можете да прочетете в тази статия.