Cod sursa(job #1365144)

Utilizator RazzinnatorRazvan Brinzea Razzinnator Data 28 februarie 2015 09:06:51
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <stdio.h>

#define MODULO 1999999973

using namespace std;

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

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

int main()
{
    long n, p;
    fscanf( f, "%ld %ld", &n, &p );

    fprintf( g, "%ld", putere( n, p ) );

    fclose( f );
    fclose( g );
    return 0;
}