Добрый день! Столкнулся с проблемой, что если нам нужно число a возвести в степень p, которая очень большая, то мы не можем брать показатель степень по данному нам простому модулю mod, это просто неправильно. В одной задаче мне нужно было вначале вычислить степень, в которую я буду возводить, а потом уже соответственно возводить, и на ограничениях, на которых показатель степени не нужно брать по модулю(он меньше 1е9 + 7) у меня AC, но на бОльших ограничениях, где уже нужно показатель степень брать по модулю у меня WA. Я подумал над малой теоремой Ферма и решил, что если брать показатель степени p по модулю (m — 1) то при дальнейшем возведение в степень ответ будет корректный, строгого доказательства у меня не было, но это вроде работало, но я получил WA(видимо раз модуль по которому мы берём уже не простой, то и неправильно). И я решил спросить: если какой-то способ считать показатель степень по данному нам простому модулю, а не записывать его длинной арифметикой?
Сюда смотри
Функция эйлера для простого числа mod равна mod — 1. Получается надо считать показатель степени p по модулю (mod — 1) так? Просто в этой задаче ещё нужно разделить по модулю, ну то есть умножить на число в степени mod — 2, но если мы как mod берём функцию эйлера, то есть 1e9 + 6, то ничего не получится, потому что 1e9 + 6 не простое и МТФ не будет работать.
тогда не знаю((
МТФ то не работает, но тебе дали ссылку на теорему, которая работает. Обратные числа по непростому модулю вполне себе существуют, просто не всегда (когда число взаимнопросто с модулем , а 10^9 +6 имеет всего два простых делителя).
Дай уже ссылку на полное условие, а то без него даже не хочется думать над решением — вдруг ещё какое условие вылезет.
Upd: Не, моё решение не работает, если показатели можно складывать. Короче, без условия ничего не понятно.
Контест с этой задачей ещё идёт, я просто думал, что я не знаю какую-то теорию, но получается, что не всё так просто, надо над самой задачей думать
— простое
В чем проблема?
Видимо, в том, что ему нужно делить показатель степени по модулю m-1 (не простому) — в общем случае не особо решаемая задача (если делим на необратимое)
Да, мне нужно показатель степени n раз умножить и делить на целое число, происходит переполнение и нужно брать по модулю, но раз это показатель степени то функция эйлера нужна, чтобы по модулю брать правильно, но модуль получается не простой. Я не очень понял твоё объяснение выше, но обсуждать задачу без условия, ясное дело, глупо, но так как контест ещё идёт условия я и не могу дать, а контест сам по себе классный.
А. Ну если происходит только деление и умножение на целые, то моё решение работает. После контеста можешь спросить — объясню подробнее. Теоремы Эйлера тебе хватит.
Окей, спасибо, контест ещё 9 дней будет идти, но потом обсудим!
Не совсем в тему, на будущее — так в целом делать нехорошо. Если правила какого-либо соревнования запрещают просить других участников о помощи, то "ну я же сам почти решил, мне только вот эту часть додавить осталось" ничем принципиально не отличается от того, чтобы спрашивать все решение.