Выводит неправильный ответ

Mikhail-up

Новичок
Пользователь
Ноя 15, 2020
8
0
1
здравствуйте, не понимаю почему при а=-108 и b=109, выводит «0» вместо «-108»?
Или я не понимаю или выводит неправильно, объясните пожалуйста!
a = int(input())
b = int(input())
print((a * b) % 109)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 566
454
83
оператор '%' - это деление с остатком и возвращает он остаток, в вашем случае остаток от деление это 0, если вам нужно простое деление то напишите так print((a * b) / 109)
 

Mikhail-up

Новичок
Пользователь
Ноя 15, 2020
8
0
1
Спасибо!
 

Mikhail-up

Новичок
Пользователь
Ноя 15, 2020
8
0
1
А почему при значениях а=-60 и b=4, выводит «87» вместо «-22»?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
А почему при значениях а=-60 и b=4, выводит «87» вместо «-22»?
Для отрицательных чисел оператор % работает по-другому. Вот тут можете почитать: ссылка.
В данном случае -240 % 109 результат вычисляется примерно так 109 * 3 - 240 = 87.
Чтобы исправить можно сделать проверку на отрицательное значение произведения:
Python:
a = int(input())
b = int(input())

if (a * b) > 0:
    print((a * b) % 109)
else:
    print((abs(a * b) % 109) * -1)
 

Mikhail-up

Новичок
Пользователь
Ноя 15, 2020
8
0
1
Спасибо большое!
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Спасибо большое!
a % b == a - (a // b) * b
 

Форум IT Специалистов