Cod sursa(job #629846)

Utilizator vlad2901Vlad Berindei vlad2901 Data 4 noiembrie 2011 01:57:27
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <cstdio>
#define MOD 1999999973

int main()
{
    int n, p;
    long long sol, curent;

    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);

    scanf("%d %d", &n, &p);;

    sol = 1;
    curent = n;

    while(p)
    {
        if(p % 2)
        {
            sol *= curent;
            if(sol > MOD)
            {
                sol = sol % MOD;
            }
        }
        curent *= curent;
        if(curent > MOD)
        {
            curent = curent % MOD;
        }
        p /= 2;
    }

    printf("%d", sol);

    return 0;
}