Блог пользователя iftekhar

Автор iftekhar, история, 5 лет назад, По-английски

How can I solve this using bigmod method?

If the series is 1+a+a^2+a^3+a^4+a^5 then this will be equal to (1+a^2+a^4)+a(1+a^2+a^4). How can I apply bigmod here!

BigMod : This is for calculating the mod of a large number like 2^100 or 10^18.

long long bigmod(long long a, long long b, long long m)
{
    if(b==0) return 1;
    if(b%2==1)
    {
        long long p1 = a%m;
        long long p2 = bigmod(a,b-1,m);
        return (p1*p2)%m;
    }
    if(b%2==0)
    {
        long long h = bigmod(a,b/2,m);
        return (h*h)%m;
    }
}
  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится +46 Проголосовать: не нравится

I think BigMod is what I call Binary Exponentiation, lets say $$$w_n = a^0+a^1+a^2\dots a^n$$$, what we will realize is that if $$$n$$$ is even then

$$$w_n = w_{n\over2} + a^{n\over2}\cdot w_{n\over2}$$$

otherwise

$$$ w_n = w_{\lfloor \frac{n}{2} \rfloor} + a^{\lfloor \frac{n}{2} \rfloor}\cdot w_{\lceil \frac{n}{2} \rceil}$$$

, so $w_n$ can be calculated using binary exponentiation.

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

1 + a^1 + a^2 + ... + a^d = ( a^(d+1)-1 ) /( a-1)

Here, you can compute the value of a^(d+1) mod m using bigmod,then subtract 1 from it.And then mutiply this with inverse modulo of (a-1) mod m.

Here a , d and m should be <= 10^18.