Cod sursa(job #366415)

Utilizator alexandru92alexandru alexandru92 Data 21 noiembrie 2009 20:09:25
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
/* 
 * File:   main.cpp
 * Author: virtualdemon
 *
 * Created on November 21, 2009, 7:53 PM
 */
#include <fstream>
#include <cstdlib>
#define Modulo 1999999973
/*
 * 
 */
using namespace std;
inline unsigned int power( unsigned int n, unsigned int p )
{
    if( 0 == n )
        return 0;
    if( 1 == n || 0 == p )
        return 1;
    if( p%2 )
    {
        unsigned int x=power( n, (p-1)>>1 );
        return n*x*x%Modulo;
    }
    else {
            unsigned int x=power( n, p>>1 );
            return x*x%Modulo;
        }
}
int main(int argc, char** argv) {
    unsigned int n, p;
    ifstream in("lgput.in");
    in>>n>>p;
    ofstream out("lgput.out");
    out<<power( n, p )%Modulo;
    return (EXIT_SUCCESS);
}