Cod sursa(job #146371)

Utilizator recviemAlexandru Pana recviem Data 1 martie 2008 16:51:42
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 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 mod) * (n mod)) mod;
            --p;
        }
        n = ((n mod) * (n mod)) mod;
        p /= 2;
    }
    return result mod;
}

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