Cod sursa(job #146365)

Utilizator recviemAlexandru Pana recviem Data 1 martie 2008 16:44:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include "stdio.h"
#define in "lgput.in"
#define out "lgput.out"
#define mod  % 1999999973

    unsigned long long  n,p;

void citire()
{
	freopen(in,"r",stdin);
    scanf("%Ld %Ld",&n,&p);
	fclose(stdin);
}

unsigned long long power(unsigned long long n, unsigned long long p)
{
    long result = 1;
    while ( p )
    {
        if ( p & 1 )
        {
            result = ((result % 1999999973) * (n % 1999999973)) % 1999999973;
            --p;
        }
        n = ((n % 1999999973) * (n % 1999999973)) % 1999999973;
        p /= 2;
    }
    return result % 1999999973;
}

int main()
{
	citire();
	//n = n % 1999999973;
	//p = p % 1999999973;
	freopen(out,"w",stdout);
	printf("%Ld ",power(n,p));
	fclose(stdout);
	return 0;
}