Cod sursa(job #1343592)

Utilizator ioan.ungurasuIoan Ungurasu ioan.ungurasu Data 15 februarie 2015 17:20:46
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <stdio.h>
using namespace std;

FILE*in = fopen("lgput.in", "r");
FILE*out = fopen("lgput.out", "w");

int putere ( int x, int n, int p ) {
    x = n % 1999999973;
    if ( p == 0 ) return 1;
    else if ( p == 1 ) return n;
    else if ( p % 2 == 0 ) return putere( x, x*n, p/2 );
    else return putere( x, x*n*n, ( p - 1 )/2 );
}

int main() {
    int r, a, b, x;
    fscanf(in, "%d%d", &a, &b);
    x = a % 1999999973;
    r = putere( x, a, b);
    fprintf(out, "%d", r);
    return 0;
}