Cod sursa(job #2070653)

Utilizator karakter98Irimia Robert karakter98 Data 19 noiembrie 2017 19:51:46
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
using namespace std;

FILE *fin;
FILE *fout;

unsigned long long N, P;

void raise(unsigned long long &N, unsigned long long P)
{
    unsigned long long aux = N;
    int i;
    for(i = 2; i <= P; i *= 2)
    {
        N *= N;
        N %= 1999999973;
    }
    if(i / 2 < P)
    {
        raise(aux, P - i / 2);
        N *= aux;
        N %= 1999999973;
    }
}

int main()
{
    fin = fopen("lgput.in", "r");
    fout = fopen("lgput.out", "w");

    fscanf(fin, "%d %d", &N, &P);

    raise(N, P);

    fprintf(fout, "%d", N);

    return 0;
}