Как правильно сгладить кривую?

Здесь вас убивают:

for(j=1;j<=i;j++)
    t=((long long)t*i)%m;

Экспоненты mod m могут быть реализованы с использованием метода чисел квадратов.

n = 10000;
m = 20000;
sqr = n;
bit = n;
sum = 0;

while(bit > 0)
{
    if(bit % 2 == 1)
    {
        sum += sqr;
    }
    sqr = (sqr * sqr) % m;
    bit >>= 2;
}
153
задан Hooked 16 December 2013 в 19:29
поделиться