Cod sursa(job #1459137)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 9 iulie 2015 11:15:25
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#include <stdlib.h>

const char iname[] = "lgput.in";
const char oname[] = "lgput.out";

const int mod = 1999999973;


int main()
{
    FILE *in = fopen(iname, "r");
    FILE *out = fopen(oname, "w");
    long long int r, a;
    int n, p;
    fscanf(in, "%d %d", &n, &p);

    r = 1;
    a = n;

    while(p > 1)
    {
        if(1 & p)
        {
            r = (r * a)%mod;
            a = (a * a)%mod;
            p = (p-1)/2;
        }
        else
        {
            a = (a * a)%mod;
            p = p / 2;
        }
    }

    r = (r*a)%mod;
    fprintf(out, "%lld", r);

    return 0;
}