Модуль по вычитанию с использованием тождеств - PullRequest
0 голосов
/ 28 мая 2018

В различных тождествах по модулю тождество вычитания утверждает, что:

(a - b) % c = (a % c - b % c) % c

Но если я посмотрю в этом примере, где a = 508, b = 201 and c = 101, ответ, который я получу с использованием тождества, будет отрицательным, что не правильно,Моя программа на c ++ использует факториал огромных чисел (не начинается с 1, а с заданного пользователем ввода в другое число) по модулю 10^9 + 7 минус другое факториальное число (меньше первого значения) mod 10^9 + 7, но я получаю отрицательные значенияили переполняется при использовании unsigned long long.

Есть ли возможная реализация для получения правильного вывода?

1 Ответ

0 голосов
/ 28 мая 2018

Да.Я думаю, что это должно быть следующим образом

((a%c - b%c) % c + c) % c

Если a = 12, b = 7 и c = 10, то (a%c - b%c)%c даст -5 Затем добавьте c и измените егоснова приведет к 5, который является правильным ответом

...