ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1560. Elementary Symmetric Functions

How find 24^(-1) mod p
Послано svr 22 сен 2007 22:32
One method uses formula a4=(t1^4-6*t1^2*t2+3*t2^2+8*t1*t3-6*t4)/24 mod p
For it we must find previously 24^(-1) mod p
But it needs in loop with ~ p=10^9 iterations
May this calculation lead to TL before main program?
Re: How find 24^(-1) mod p
Послано Vedernikoff Sergey 22 сен 2007 22:38
Why can't we use extended euclid?
Re: How find 24^(-1) mod p
Послано Ardian KP 23 сен 2007 14:10
or use fermat little theorem

a^(p-1) = 1 (mod p)
a^(p-2).a = 1 (mod p)

so a^(-1) = a^(p-2) :)
Re: How find 24^(-1) mod p
Послано Walrus (Dmitry Bochkarev) 30 сен 2007 01:03
// O(a)
inline int inv(int a)
{
    for (int i = 1; ; i++)
    {
        int64 b = (int64) P * i + 1;
        if (b % a == 0)
            return int(b / a);
    }
    return 0;
}
Re: How find 24^(-1) mod p
Послано svr 30 сен 2007 09:39
Best advise was extended evclid
I could apply it during the context.
But 1560 wuild bettter to solve in Java using BigInt
We simply use /24 at the end and avoid many %p operations.
Re: How find 24^(-1) mod p
Послано Denis Koshman 15 авг 2008 16:16
a/b mod p = a*b^-1 mod p = a*b^(-1 mod p-1) mod p = a*b^(p-2) mod p. b^(p-2) can be precomputed using logarithmic powering. I needed only divisors 2, 6 and 24.