Как преобразовать двойное значение в PQ ^ -1 по модулю MOD напрямую, где q взаимно просто с MOD - PullRequest
2 голосов
/ 07 апреля 2020

Я имею дело с вопросом о вероятности, где вероятность может быть выражена в виде дроби P / Q, где P и Q являются целыми числами (P≥0, Q> 0), а Q является взаимно простым с 998 244 353. Вы должны вычислить P⋅Q ^ −1 по модулю 998,244,353.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2020

Вы не можете. Значения с плавающей точкой не являются точными, так что это все равно, что пытаться преобразовать десятичную дробь в дробную после ее округления. Вам необходимо выполнить мод расчетов 998244353, начиная с начала, и вместо того, чтобы делить вас, умножьте на модульное обратное. Можно доказать, что выполнение этого равносильно выполнению всех вычислений с использованием точных дробей и преобразованию в модульную форму в самом конце.

1 голос
/ 08 апреля 2020

Вы можете использовать Маленькая теорема Ферма

, это может быть полезно, если вы ищете код

0 голосов
/ 12 апреля 2020

Это можно решить с помощью Расширенного евклидова алгоритма . Вы можете посетить следующую ссылку для получения дополнительной информации и решения кода:

https://www.geeksforgeeks.org/multiplicative-inverse-under-modulo-m/

...