Cod sursa(job #383042)

Utilizator alexandru92alexandru alexandru92 Data 15 ianuarie 2010 15:19:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
/* 
 * File:   main.cpp
 * Author: virtualdemon
 *
 * Created on January 15, 2010, 2:58 PM
 */
#include <cstdio>
#define Modulo 1999999973

/*
 *
 */
using namespace std;
inline unsigned long long int pow( unsigned long long int x, unsigned long long int n )
{
    if( 0 == n )
        return 1;
    if( n&1 )
    {
        unsigned long long rez=pow( x, (n-1)>>1 )%Modulo;
        rez=(rez%Modulo)*(rez%Modulo)%Modulo;
        return (rez%Modulo)*(x%Modulo)%Modulo;
    }
    unsigned long long rez=pow( x, (n)>>1 )%Modulo;
    return (rez%Modulo)*(rez%Modulo)%Modulo;
}
int main()
{
    unsigned long long n, p;
    fscanf( fopen("lgput.in", "rt"), "%llu%llu", &n, &p );   
    fprintf( fopen("lgput.out", "wt" ), "%llu", pow( n, p ) );
    return 0;
}