Форум за въпроси

Домашно 3

Домашно 3

от Димитър Петров -
Number of replies: 4

Относно промените в условието на задача 8, ако приемаме остатъка за неотрицателно число, следва че -1 по модул 3 има остатък 1. Тогава не трябва ли последният пример да има вида: 12 33 0 -1 11 8?

In reply to Димитър Петров

Re: Домашно 3

от Денис Белинов -
In reply to Денис Белинов

Re: Домашно 3

от Мартин Георгиев -

-1 % 3 не е ли равно на -1? Но, тъй като взимаме положителната стойност на остатъка, фактически 1?

In reply to Мартин Георгиев

Re: Домашно 3

от Денис Белинов -

Проверете в wikipedia какво представлява операцията mod, защото в c++, % не отговаря точно на нея. Да вземем положителните стойности на остатъците не означава да ги умножим по -1. Последния пример, както е показал колегата по - горе, показва че -1 е към групата на числата с остатък 2. Аз поне така разбирам условието.

In reply to Денис Белинов

Re: Домашно 3

от Трифон Трифонов -

Потвърждавам обяснението на Даниел.

Според общоприетата дефиниция за остатък, остатъкът от делението на две цели числа a и d е единственото цяло неотрицателно число 0 ≤ r < |d|, за което съществува цяло число q (частно), така че a = q.d + r. В случая d = 3, a = -1, q = -1 => r = 2.

За съжаление, операцията % в C++ не отговаря точно на тази дефиниция. Подробно изследване на вариантите за дефиниране на частно и остатък, можете да прочетете в тази статия.